6

jquery変更イベントが関連付けられたテキストボックスがあります。

$('#txtAccountNo').change(function(){
        $('label[for="txtAccountNo"]').append('<span class="support">loading...</span>')
    });

このイベントは、テキストボックスがフォーカスを失ったとき、つまりユーザーがマウスでクリックするか、タブキーを使用したときに機能します。しかし、リターンキーが押されたとき、イベントは発生しません。誰でもこれを解決するのを手伝ってもらえますか?

4

4 に答える 4

6

これは、changeイベントの標準的な動作です。各プレスをキャプチャする場合は、イベントEnterを使用する必要があります。keypress

$('#txtAccountNo').on('change keypress', function(e) {
  if (e.type == 'change' || (e.type == 'keypress' && e.which == 13)) {
    $('label[for="txtAccountNo"]').append('<span class="support">loading...</span>')
  }
});
于 2013-02-08T11:01:12.577 に答える
3

強調表示したように、changeイベントはテキスト入力がフォーカスを失ったときにのみ発生します。keyup代わりにバインドする必要があります。

$('#txtAccountNo').on('keyup', function() { 
    $('label[for="txtAccountNo"]').append('<span class="support">loading...</span>')
});

上記の追記changeとして、誰かがテキストボックスにテキストを貼り付けたときにも機能を実行したい可能性が高いため、イベントも維持することはおそらく賢明な考えです。次を使用してそれを行うことができます。

$('#txtAccountNo').on('keyup change', function() { ... });
于 2013-02-08T10:59:41.897 に答える
1

Matthew の回答に記載されているように、問題は IE9 以前で発生しますが、最新のブラウザーでは発生しません。以下のソリューションをお勧めします。これにより、この機能がすべてのブラウザーに追加されます。

$('input[type=text]').on('keypress', function (e) {
    var $input = $(this);
    if (e.which == 13) { // Enter was hit
        $input.trigger('change');
    }
});

テキスト入力のキープレスをリッスンし、Enterヒットすると、変更イベントを発生させます。

于 2014-05-19T09:15:15.077 に答える
1

実際、最新のブラウザーと jQuery (質問で使用されているようです) 1.7 以上では、戻るボタンはフォーカスを失うことなく変更をコミットし、コードは機能するはずです。

<input/><output/>
$("input").change( function() {
    $("output").val( $("input").val() );
})

ここで簡単なテストをチェックしてください: http://jsfiddle.net/4vBSm/2/

ただし、これは IE 9 以下では発生しません。(そして、jQuery はhttp://bugs.jquery.com/ticket/11556を修正しません)

于 2014-03-20T17:33:36.313 に答える