javascript - vue.js 强制更新输入元素不起作用

标签 javascript vue.js vuetify.js

我有一个与 v-model 绑定(bind)到项目值的输入元素,我想将用户输入限制为仅在 010 之间输入数值>,我之前尝试过这个东西(添加@input 并检查输入值以使其保持在范围内)

我的代码是这样的:

<v-text-field @input="checkItem" v-model="item"></v-text-field>

checkItem(val) {
      if(parseInt(val) < 1) {
        this.item = 1;
      } else if(parseInt(val) >10) {
        this.item = 10;
      }
    }

问题 在我们第一次输入超出范围的数字后,该函数运行良好并将其保持在范围内,但是当我们再次输入超出范围的数字时,元素没有更新,因为新项目值与旧项目值相同!为了解决这个问题,我尝试使用 forceUpdate 并且 $forceUpdate() 不起作用!!!

例如

  • 如果用户在输入中输入范围数字之间的任何内容,因为它在范围内,所以一切正常;

  • 但是如果用户键入 0 或任何超出范围的数字,如果值小于 1,则第一次将项目值更改为 1 但如果再次键入任何负值,因为项目值上次更改为 1 时我们再次将它设置为 1 View 上没有任何反应,元素值也没有更新。

主要问题是如何强制vue更新这个输入框的值?

最佳答案

  <div><input type="number" v-model="item"></input></div>
</template>

<script>
export default {
  name: "ranges",

  data() {
    return {
      item: Number,
      error: String
    };
  },

  watch: {
    item(newVal, lastVal) {
      if (newVal > 10) this.item = 10
      if (newVal < 1) this.item = 1
    }
  }
};
</script>

在这里使用观察者你可以做验证

关于javascript - vue.js 强制更新输入元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54916583/

相关文章:

laravel - 将数据从 PHP Twig 传递到 Vue 组件

javascript - 关闭 `v-dialog` 时如何破坏食物成分?

vue.js - Vuetify 嵌套数据表

javascript - 等待 aysnc 调用每个

asp.net-mvc - Vue + Asp.net 渲染问题

javascript - Node.js 为什么子进程没有立即启动?

vue.js - Vue、Leaflet、访问 ref 对象/函数

javascript - vue中如何设置条件规则和必填字段?

javascript - 当状态在其他地方更新时,不会触发 useEffect Hook

javascript - 使用 POST 发送数据到 JSONP 请求