0

#$ @%のような禁止された文字がユーザーによって入力されたときに何かを警告するjQueryでフォーム検証を行っています。問題は、ユーザーがこれらの文字を入力するときにShiftキーを使用するため、2つのキーアップがあることです。

2番目の問題が発生しないようにするにはどうすればよいですか?

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 ではコールバックが 2 回トリガーされる可能性があるため、入力イベントのサポートを確認し、それに応じて対応する必要がある場合があります。

http://jsfiddle.net/X4qNf/

ここで私の悪い点は、propertychange が含まれているものです。IE で試してみてください。うまくいかない場合は、古い方法で割り当てる必要があるかもしれません。

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

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

于 2012-04-13T22:51:19.540 に答える