我在下面有一个函数,它不允许用户在文本框中键入字母,但它一直说事件未定义。我想在哪里以及如何定义事件?
以下是功能:
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
下面是可以使用它的html:
onkeypress="return isNumberKey(event)"
答案 0 :(得分:5)
变化
var charCode = (evt.which) ? evt.which : event.keyCode
到
var charCode = (evt.which) ? evt.which : evt.keyCode
或者如果你使用的是jQuery(你标记它但没有使用它)你可以做
$('#textareaid').keypress(function(e) {
if (e.which > 31 && (e.which < 48 || e.which > 57)) {
e.preventDefault();
}
});
你的html是
<textarea id="textareaid"></textarea>
关于如何使用jQuery按下键的注意事项
要确定输入了哪个字符,请检查事件对象 传递给处理函数。虽然浏览器使用不同 存储此信息的属性,jQuery规范化.which 属性,因此您可以可靠地使用它来检索字符代码。
取自.keypress()文档
答案 1 :(得分:0)
这是应该工作的代码:
function checkerFunction(e){
var charCode=e.which || e.keyCode;
if(charCode<=31 || charCode>=48 && charCode<=57)return true;
return false;
}
并且事件绑定应该是
onkeypress="return checkerFunction(window.event)"
答案 2 :(得分:0)
对于记录,我认为上面的大部分答案都没有考虑ARROW键。
如果您正在使用Google搜索,这应该是它的工作原理。
function isNumberKey(event)
{
var charCode = event.charCode;
if ((charCode < 48 || charCode > 57) && charCode != 0){
return false;
}
return true;
}