【发布时间】:2020-12-14 15:17:11
【问题描述】:
我有多个输入字段,我想在 Vue.js 中限制它们只接受数字。
我想禁止用户输入除 0-9 数字以外的任何字符。
我已经通过这样做成功地做到了(这个解决方案复制粘贴证明):
Vue.js 模板中的代码:
<input type="text" name="priceMax" class="input" @input="correctNumberInput" />
删除除数字以外的所有内容的方法:
correctNumberInput: function(event){
event.target.value = event.target.value.replace(/[^0-9]/g, "");
}
这在多个领域都非常有效。
问题来了:由于不同的原因,我需要在这些输入上使用 v-model字段。添加 v-model 后,我的方法不再起作用。我想这是因为 v-model 在后台也使用了输入事件。所以只添加“v-model”,它就无法工作:
<input type="text" name="priceMax" class="input" @input="correctNumberInput" v-model="priceMax" />
我想到的可能解决方案很少,但所有解决方案都包含大量重复代码。
例如,我可以为每个输入字段添加观察者,但这将是很多重复的代码(因为我需要为每个输入字段都这样做)。我有 5 个输入字段,所以基本上我需要编写 5 个几乎相同的观察者。如果可能的话,我想避免这种情况......例如:
watch:{
number(){
this.priceMax = this.priceMax.replace(/[^0-9]/g, "");
}
}
有没有什么方法可以解决它,让它像我的解决方案一样简单无需重复代码? 如果还提供可复制粘贴证明的解决方案,那就太好了。 欢迎所有建议!提前致谢!
【问题讨论】:
-
也许this one 会有所帮助
-
感谢您的回答!这些解决方案很好,但对我来说最大的问题是重复代码。我有 5 个输入字段,所以基本上我需要编写 5 个几乎相同的观察者。如果可能的话,我想避免这种情况......
标签: javascript vue.js input vuejs2 v-model