移动端vue;如何进入页面自动获取焦点弹起键盘?

1.vue项目input,在pc中可以自动获取焦点;在手机移动端上无法获取;代码如下

 <input
   type="text"
   placeholder="搜索"
   v-autofocus
   v-model="searchResult"
   ref="searchInput"
  />

我用的方法如下;方法一;通过ref;无法在移动端上实现

 mounted: function() {
    this.$nextTick(() => {
      this.$refs.searchInput.focus();
    });
  },

方法二 自定义指令;同样只能在pc有效,移动端无效

 directives: {
    autofocus: {
      inserted: function(el) {
        el.focus();
      }
    }
  },

请问这种情况下如何解决

阅读 7.3k
3 个回答

在mounted中判断当前是在移动端打开页面,使用原生js去绑定focus事件呢。

    //来自浏览器的一些安全策略 没有用户行为触发的ui事件是失效的
    mounted: function() {
        window.addEventListener('touchend', () => {
            this.$refs.searchInput.focus();
        })
    },

ios必须经过用户操作才能触发键盘谈起,入点击事件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题