1

テキストボックスの外側をクリックすると警告を表示するテキストボックスがあります。ユーザーがEnterキーを押した場合にもアラートを表示しようとしています。ここに私が持っているものがあります:

<input id="txtInput" type="text" onblur="alert('Hello');" />

<script type="text/javascript">
    $(document).ready(function () {
    $("#txtInput").keyup(function (event) {
        if (event.keyCode == 13) {
            $(this).blur();
            return false;
        }
    });
});

テキストボックスの内側をクリックしてから外側をクリックすると、アラートが正しく表示されます。

しかし、テキスト ボックス内で Enter キーを押すと、アラートが表示されます。アラートを閉じると、別のアラートが表示されます (テキスト ボックスで onblur が呼び出されているためだと思います)。

$(this).blur()テキストボックスからフォーカスを削除しないのはなぜですか? または、これを行うより良い方法はありますか?

4

1 に答える 1

2

なぜこれが機能するのかはわかりませんが、onblurイベントを HTML から削除して js に入れると機能します。

http://jsfiddle.net/ERdaa/4/

$("#txtInput").keyup(function (event) {
    if (event.keyCode == 13) {
        $(this).blur();
        return false;
    }
}).blur(function(){
     alert('Hello');
});

[編集] セレクターを 2 回使用する代わりにチェーンを使用するようにコードをクリーンアップしました。

于 2013-03-07T20:19:37.620 に答える