Suc*_*Man 2 javascript vue.js vue-component vuex vuejs2
我尝试这样:
<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>
Run Code Online (Sandbox Code Playgroud)
如果代码执行并且我输入dot(.),它仍然可以
在桌面上,它已禁用。但在移动设备中,它不会禁用
我想禁用点。所以用户不能输入点
我该怎么做?
笔记
在 dekstop 中,代码有效。但是在移动设备中,代码不起作用。点(.)在移动设备中没有禁用
问题是带有“keydown”或“keyup”的键码在浏览器之间似乎不一致。也许操作系统也有影响。您可以在此处在各种浏览器和移动设备上进行测试
我认为您会发现使用该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);
}
Run Code Online (Sandbox Code Playgroud)
我也鼓励你看看整个事件,因为它也回来了。event.code = "Period"并且event.key = "."虽然只是event.key = "."充满对移动设备Firefox。
console.log(event);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4281 次 |
| 最近记录: |