javascript - Vue.js 输入框在输入一个字符后失去焦点

标签 javascript focus vue.js

我有一个带有输入字段的 View ,它可以与给定的按钮相乘。问题是在输入任何一个字符之后,输入字段的焦点就会丢失。您必须再次单击才能输入另一个字符。

有人知道可能是什么问题吗?

我的模型:

'model': [
    ...,
    'filter': [
        ...,
        'something': [
            'string'
        ]
    ]
]

我的代码:

<div v-for="(something, index) in model.filter.something" v-bind:key="something">
    <input type="text" v-model.trim="model.filter.something[index]"/>
</div>

最佳答案

问题是您正在使用一个不断变化的值作为 key。 Vue 期望 key 指示项目的唯一标识符。当您更改它时,它会成为一个新项目,必须重新渲染。

在下面的代码片段中,我有两个循环,都使用相同的数据源。第一个是按照您设置的方式键入的。第二个使用 index 代替(这可能不是您需要的,但焦点是使用您正在编辑的内容以外的东西;在这个例子中,key 不是无论如何都不需要)。第一个表现出您描述的注意力不集中,第二个表现出预期的效果。

new Vue({
  el: '#app',
  data: {
    'model': {
      'filter': {
        'something': [
          'string'
        ]
      }
    }
  }
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.2.6/vue.min.js"></script>
<div id="app">
  <div v-for="(something, index) in model.filter.something" v-bind:key="something">
    <input type="text" v-model.trim="model.filter.something[index]" />
    {{something}}
  </div>
  <div v-for="(something, index) in model.filter.something">
    <input type="text" v-model.trim="model.filter.something[index]" :key="index" />
    {{something}}
  </div>
</div>

关于javascript - Vue.js 输入框在输入一个字符后失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43074144/

相关文章:

android - 在 Oreo 设备的聚焦 View 上禁用自动突出显示

javascript - Vue-cli webpack模板中main.js如何链接到Index.html

javascript - 如何从 Javascript ES6 文件导入 wasm 文件?

vue.js - 如何在 Vuex 中获取 Vue Router 参数?

javascript - 函数导出未按预期工作

javascript - 如何通过正则表达式替换路径中的任意字符串?

angular - ionic 2 - 单击发送按钮时保持键盘打开

javascript - 尝试使用多个 TwentyTwenty 实例,但有些返回高度为 0,并且不显示

javascript - 我无法在 AngularJS 中使用 $http.post 发送新数据

android - 如何欺骗箭头键到我在 android 上的 Activity