我正在使用以下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;
};
调用此函数为
<input type="text" onkeypress='validateQty(event)'>
毫无疑问,您的代码是正确的,但是您错过了文本框中的“ return”关键字。
<input type="text" onkeypress='return validateQty(event);'>
你可以在这里看到代码
是的,它有效。但是,当我复制粘贴任何字母时,就会出现问题。
@nkp-如果在不使用键盘的情况下粘贴值,则显然
keypress
处理程序不会捕获它。如果您使用键盘进行粘贴,则需要使用进行测试keydown
,因为我认为粘贴不会触发keypress
事件。(可能更简单,只是删除不需要的字符onblur
...)@学习-是的,我知道。只是想更进一步
@Learning-如果我在onkeydown事件上调用相同的函数,即使数字值也不会复制到文本中。
@nkp-您似乎要回复的评论是我的。我没有说要在keydown上调用相同的功能,我只是指出,如果要捕获基于键盘的粘贴,可能需要以某种方式使用keydown。同样,在模糊中删除不需要的字符可能会更容易,因为用户可以在不使用键盘或剪贴板(使用拖放)的情况下将文本放入字段中。