0

jQuery を使用して、ユーザーが検索ボックスに最初の文字を@またはとして#入力したことを検出し、キーボードの言語や設定に関係なく警告を表示することは可能ですか?

たとえば、検索ボックスに入る@と、メッセージを表示したり、アクションを実行したりします。

​<input type='text' name='search' id='search' />​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

jQuery

$("#search").keydown(function(event) {
    alert(event.which);
});​
4

3 に答える 3

2

入力の最初の文字がこれらの文字のいずれかであるかどうかをテストする場合は、入力した文字をテストしないで、最初の文字をテストします。

$("#search").on("blur", function() {
    if (/^[@#]/.test(this.value))
       alert("@ or # entered.");
});

ユーザーの煩わしさを軽減し、コピー/貼り付けまたはドラッグアンドドロップに対応できるため、すべてのキーストロークではなく、ぼかし(またはフォームの送信時)でこれを行う方がよいことに注意してください.

于 2012-07-11T09:40:47.743 に答える
1

keypressイベントのみが信頼できる値を報告しますevent.which: http://jsfiddle.net/QDCvG/

$("#search").keypress(function(event) {
    // @ = 64, # = 35
    if ((this.value.length === 0 || this.selectionStart === 0)
     && (event.which === 64 || event.which === 35)) {
        // keypress fires before the field is populated
    }
});​

String.fromCharCode(event.which)入力された文字を取得するために使用できます。

于 2012-07-11T09:38:12.190 に答える
1

イベントを bind に変更する必要がありますkeyup。2 つのキーが離されたときでもイベントが発生します。この.charAt(0)メソッドは、入力ボックスの最初の文字をチェックします。

$("#search").keyup(function(event) {
     var curKey = $(this).val();

     if (curKey.charAt(0) == '@' || curKey.charAt(0) == '#')
     {
         alert('@ or # typed first!');
     }
});

LIVE : http://jsfiddle.net/yHcVH/

于 2012-07-11T09:45:11.787 に答える