Javascript 在Vue中实现@keypress

Javascript 在Vue中实现@keypress,javascript,vue.js,vuejs2,vue-component,onkeypress,Javascript,Vue.js,Vuejs2,Vue Component,Onkeypress,我正在尝试在Vue组件中实现onkeypress事件。在按键时,我想限制除数字以外的所有按键代码。我正在尝试以下方法 使用onkeypress事件,一切正常 <input type="number" onkeypress="return (event.charCode === 0 || /\d/.test(String.fromCharCode(event.charCode)));" /> 当我将上述内容转换为在Vue中使用时,它不起作用

我正在尝试在Vue组件中实现
onkeypress
事件。在按键时,我想限制除数字以外的所有按键代码。我正在尝试以下方法

使用onkeypress事件,一切正常

<input type="number" onkeypress="return (event.charCode === 0 || /\d/.test(String.fromCharCode(event.charCode)));" />

当我将上述内容转换为在Vue中使用时,它不起作用!!!:(


导出默认值{
名称:“数量选择器”,
方法:{
限制字符:函数($event){
返回($event.charCode==0 |/\d/.test(String.fromCharCode($event.charCode));
}
}

我遗漏了什么?我不明白出了什么问题?非常感谢您的帮助!

解决了问题。虽然我在读取键码时返回了布尔值,但我没有阻止默认的按键操作。
restrictChars
方法应该是这样的

restrictChars: function($event) {
    if ($event.charCode === 0 || /\d/.test(String.fromCharCode($event.charCode))) {
        return true
    } else {
        $event.preventDefault();
    }
}

您可以使用
v-model.number=“yourmodel”@input=“restrictChars”
我使用的是v-model.number,但我没有看到任何关于@input的文档。您能给我发送一个链接吗?而且这个@input的东西似乎不适用于不同的浏览器。适用于chrome,而不适用于Safari和Firefox。我认为问题出在您的方法逻辑中,而不是在事件中。您认为问题出在哪里?方法是假设的d返回一个基于按键的布尔值。这意味着所有数字都为true,其他所有数字都为false。这能解决其他浏览器的问题吗?是的,绝对可以!100%。Chrome、Safari、Firefox(所有最新版本)都能工作!我还没有在IE11和Edge上测试过!
restrictChars: function($event) {
    if ($event.charCode === 0 || /\d/.test(String.fromCharCode($event.charCode))) {
        return true
    } else {
        $event.preventDefault();
    }
}