如何在下面定义事件

时间:2012-04-13 13:32:44

标签: javascript jquery

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

以下是功能:

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

3 个答案:

答案 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>

请参阅event.preventDefault()

关于如何使用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;
}