0

我在下面有一个函数,它不允许用户在文本框中输入字母,但它一直说事件未定义。我想在哪里以及如何定义事件?

下面是函数:

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)"
4

3 回答 3

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>

event.preventDefault()

关于如何使用 jQuery 按下按键的注意事项

要确定输入了哪个字符,请检查传递给处理函数的事件对象。虽然浏览器使用不同的属性来存储这些信息,但 jQuery 对 .which 属性进行了规范化,因此您可以可靠地使用它来检索字符代码。

取自.keypress()文档

于 2012-04-13T13:34:58.410 回答
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)"
于 2012-04-13T13:45:59.653 回答
0

作为记录,我认为上面的大多数答案都没有考虑到箭头键。

这应该是它的工作方式,以防你在谷歌上搜索它。

function isNumberKey(event)
{
   var charCode = event.charCode;
   if ((charCode < 48 || charCode > 57) && charCode != 0){
       return false;
   }
    return true;
}
于 2013-01-22T16:25:58.817 回答