0

我正在 jQuery 中进行表单验证,当用户输入像 #$@% 这样的禁止字符时会发出警报。问题是,当用户输入这些字符时,他使用 SHIFT 键,所以有两个键。

如何防止第二次发生?

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

非常感谢

4

2 回答 2

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);
    }
});​
于 2012-04-13T22:43:49.123 回答
1

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

http://jsfiddle.net/X4qNf/

我的坏处是其中带有属性更改的那个,如果它不起作用,请在 IE 中尝试,您可能必须以旧方式分配它。

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

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

于 2012-04-13T22:51:19.540 回答