我尝试这样:
<template>
...
<input type="number" class="form-control" v-model="quantity" min="1" v-on:keydown="disableDot">
...
</template>
<script>
export default{
...
methods:{
disableDot: function(evt) {
evt = (evt) ? evt : window.event
let charCode = (evt.which) ? evt.which : evt.keyCode
if (charCode === 190 || charCode === 189 || charCode === 187) {
evt.preventDefault()
}
else {
return true
}
}
}
}
</script>
如果代码执行后我输入点(.),仍然可以
在桌面上,它已禁用。但在移动设备上,它不会禁用
我想禁用点。所以用户无法输入点
我该怎么做?
注意
在桌面上,代码可以运行。但在移动设备上,该代码不起作用。点(.)在移动设备中不禁用
最佳答案
问题是“keydown”或“keyup”的键码在不同浏览器中似乎不一致。也许操作系统也有影响。您可以在各种浏览器和移动设备上对此进行测试 here
我认为使用 v-on:keypress
事件您会发现更加一致。在我的快速(移动设备上不完整)测试中,以下内容始终返回“46”。快速警告,我注意到输入“.”在我的 Android 键盘上的 Firefox Mobile 上,我收到了两个按键事件。
//in template
<input type="number" v-on:keypress="capturePress($event)">
//in methods
capturePress: function(event) {
console.log(event.charCode);
}
我还鼓励您查看整个事件,因为它也回归了。 event.code = "Period"
和 event.key = "."
,尽管在移动 Firefox 上仅填充了 event.key = "."
.
console.log(event);
关于javascript - 为什么 keydown 在手机上不起作用? vue.js 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46640328/