模拟Tab键

时间:2016-11-23 08:28:30

标签: vue.js

任何人都知道如何模拟Tab键来移动输入?

<input type="text" @keyup.enter="myfunc">
<input type="text" @keyup.enter="myfunc">
<input type="text" @keyup.enter="myfunc">

new Vue({
  methods: {
    myfunc() {
      //?
    }
  }
});

非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以在Vue指令的帮助下完成此操作:vue-focus,请参阅工作代码here

您必须将所有输入放在ID为

的div中
<div id="demo">
  <input type="text" v-focus="focused['0']" v-on:keyup.enter="changeFocus(1, 0)">
  <input type="text" v-focus="focused['1']" v-on:keyup.enter="changeFocus(2, 1)">
  <input type="text" v-focus="focused['2']" v-on:keyup.enter="changeFocus(nil, 2)">
</div>

并使用此id来安装Vue组件:

var demo = new Vue({
    el: '#demo',
      mixins: [ VueFocus.mixin ],
    data:{
         focused: {
             "0": true,
             "1": false,
             "2": false
         }
    },
    methods:{   
      changeFocus(bringInFocus, removeFocus){
         if(bringInFocus) this.focused[bringInFocus] = true
         this.focused[removeFocus] = false
      }
    }
})

答案 1 :(得分:0)

是的,使用vue-focus肯定是要走的路。它可以通过npm安装。文档是自解释的,请参阅:

https://www.npmjs.com/package/vue-focus

关于上面Saurabh给出的例子:

<div id="demo">
    <input type="text" v-focus="focused['0']" @keyup.enter="changeFocus('0','1')" />
    <input type="text" v-focus="focused['1']" @keyup.enter="changeFocus('1','2')" />
    <input type="text" v-focus="focused['2']" />
</div>

然后你可以得到以下内容(注意我使用的是指令而不是mixin,但你也可以使用):

import { focus } from 'vue-focus';

var demo = new Vue({
    el: '#demo',
    directives: { focus: focus },
    data:{
         focused: {
             "0": true,
             "1": false,
             "2": false
         }
    },
    methods:{   
        changeFocus(current, new) {
            this.focused[current] = false;
            this.focused[new] = true;
        }
    }
})