Javascript 如何在html文本中允许数字、退格、删除、左右箭头键?

Javascript 如何在html文本中允许数字、退格、删除、左右箭头键?,javascript,html,Javascript,Html,我正在使用下面的javascript代码,我认为它应该只允许文本框中的数字键、退格键、删除键、左箭头键和右箭头键,但它也允许字母。我不知道为什么 function validateQty(event) { var key = window.event ? event.keyCode : event.which; if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode =

我正在使用下面的javascript代码,我认为它应该只允许文本框中的数字键、退格键、删除键、左箭头键和右箭头键,但它也允许字母。我不知道为什么

function validateQty(event) {
    var key = window.event ? event.keyCode : event.which;

if (event.keyCode == 8 || event.keyCode == 46
 || event.keyCode == 37 || event.keyCode == 39) {
    return true;
}
else if ( key < 48 || key > 57 ) {
    return false;
}
else return true;
};
功能验证数量(事件){
var key=window.event?event.keyCode:event.which;
如果(event.keyCode==8 | | event.keyCode==46
||event.keyCode==37 | | event.keyCode==39){
返回true;
}
否则,如果(键<48 | |键>57){
返回false;
}
否则返回true;
};
将此函数调用为

<input type="text" onkeypress='validateQty(event)'>

毫无疑问,您的代码是正确的,但您在文本框中遗漏了“return”关键字

<input type="text" onkeypress='return validateQty(event);'>

您可以看到代码

函数isNumberKey(evt)
{
var charCode=(evt.which)?evt.which:event.keyCode
如果(字符码>31&(字符码<48 | |字符码>57))
返回false;
返回true;
}


const validateQty=(事件)=>{
var key=window.event?event.keyCode:event.which;
console.log(事件);
如果(event.keyCode==8 | | event.keyCode==46
||event.keyCode==37 | | event.keyCode==39){
返回true;
}否则,如果(键<48 | |键>57){
返回false;
}else{return true;}
};

我对他的代码做了一些修改,所以您只需在输入中添加一个类即可

$(".numberonly").keydown(function(e){
    // Number Only
    if (e.keyCode == 8 || e.keyCode == 46
       || e.keyCode == 37 || e.keyCode == 39) {
          return true;
      }
      else if ( e.keyCode < 48 || e.keyCode > 57 ) {
        e.preventDefault();
      }
  });
<input type="text" class="numberonly" />
$(“.numberonly”).keydown(函数(e){
//仅限数量
如果(e.keyCode==8 | | e.keyCode==46
||e.keyCode==37 | | e.keyCode==39){
返回true;
}
否则如果(e.keyCode<48 | | e.keyCode>57){
e、 预防默认值();
}
});
将类添加到输入

$(".numberonly").keydown(function(e){
    // Number Only
    if (e.keyCode == 8 || e.keyCode == 46
       || e.keyCode == 37 || e.keyCode == 39) {
          return true;
      }
      else if ( e.keyCode < 48 || e.keyCode > 57 ) {
        e.preventDefault();
      }
  });
<input type="text" class="numberonly" />


允许退格、删除、左键和右键是什么意思right@Mr.Alien-我是说这些钥匙。编辑了我的问题。是的,它有效。但是当我复制粘贴任何字母表时就会出现问题。@nkp-如果您粘贴一个值而不使用键盘,那么显然
按键处理程序将无法捕获它。如果使用键盘粘贴,则需要使用
keydown
测试,因为我认为粘贴不会触发
keypress
事件。(删除不需要的字符可能更简单)
onblur。@Learning-是的,我知道。只是想走一步further@Learning-如果我在onkeydown事件上调用相同的函数,即使是数值也不会复制到文本中。@nkp-您似乎要回复的注释是我的。我没有说要在keydown上调用相同的函数,我只是注意到,如果您想捕获基于键盘的粘贴,可能需要以某种方式使用keydown。同样,删除模糊上不需要的字符可能更容易,因为用户可以在字段中放置文本,而无需使用键盘或剪贴板(使用拖放)。请解释您所写的内容。编写的代码是用户只允许数字、arow键,如果您需要此类型的文本框,请在文本框中按back键…此代码可能会回答问题,提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。