如何在jQuery中阻止keyup()事件一秒钟?

时间:2012-04-13 22:39:10

标签: javascript jquery

我正在jQuery中进行表单验证,当用户输入#$ @%等禁用字符时会发出警告。问题是,当用户输入这些字符时,他使用SHIFT键,因此有两个键盘。

如何防止第二次发生?

if (!regex.test(lastCharacter)
     alert('forbidden character');

非常感谢

2 个答案:

答案 0 :(得分:1)

我不知道这是否有效,但你明白了:

$("#myInput").keyup(function(e) {
    if(e.which == 16) {
        $(this).keyup(function(event) {
            if(event.which==16) event.preventDefault();
        });

        setTimeout(function() { 
            $("#myInput").off('keyup');
        },1000);
    }
});​

答案 1 :(得分:1)

您可以绑定输入更改时发出的输入事件,但是只有IE9才支持。在此之前,您可以绑定在输入更改时发生的propertychange事件(仅在IE中)。以下示例适用于大多数浏览器,也可能在IE9中触发两次回调,因此可能需要检查输入事件支持并相应地采取相应措施。

http://jsfiddle.net/X4qNf/

我的不好就是那个带有属性变化的人,如果它不起作用,你可以尝试在IE中尝试使用旧的方法。

 $('#boo')[0].onpropertychange = function() {};

http://jsfiddle.net/X4qNf/2/