0

次の問題があります。

入力フィールドでイベント リスナーを取得しました。すべてのキーダウン イベントで、入力フィールドの値が検証される必要があります。問題は、イベント ターゲットに割り当てられた値が遅延することです。

  1. 空の入力フィールドがあり、1 文字を入力します。

    $('form.registration').keydown(function(e) {
    var $el = $(e.target);
    if ($el.val() == "") {
        $el.closest("div.control-group").addClass("error");
    }
    console.log($el.val()); // this logs ""
    });
    
  2. 2番目の文字を入力します

    $('form.registration').keydown(function(e) {
    var $el = $(e.target);
    if ($el.val() == "") {
        $el.closest("div.control-group").addClass("error");
    }
    console.log($el.val()); // this logs the first letter (for example: "a")
    });
    

ご覧のとおり、値は常に 1 文字遅れます。

どうすればこれを修正できますか?

4

1 に答える 1

2

代わりに使用することをお勧めしますkeyup。これにより、ユーザーがキーを押したままにしておくと、プログラムが集中的に実行されるのを防ぐことができます。コンテンツは、ユーザーがキーを離した後にのみ処理されます。多くの場合、この方法は非常に便利です。

于 2012-07-12T07:44:16.730 に答える