0

ユーザーがキーを押すと、テーブル行を追加していenterます。

以下のコードは奇妙な動作をしています。キーが入力フィールドにあるときにキーが押された回数に応じて行を追加します。ヒットした
場合にのみ行を追加したい。enter

以下のコードの何が問題なのか、誰か教えてもらえますか?

$(document).on('keypress', '#quantity_sold', function () {
    var num = 0;
    console.log('key pressed');
    $(this).keypress(function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
            e.preventDefault();
            quantitySold = $("#quantity_sold").val();
            rowTotal = parseInt(quantitySold) * unitPrice;
            row = "";
            insertRow();
            console.log("Num inside if statement:" + num);

            $("#inventory_name").val("");
            $("#quantity_sold").val("");
            $("#inventory_name").focus();
            return false;
        }
        console.log("Num outside of if statement:" + num);
        num++;
    });
});

これに少なくとも1週間苦労しましたが、ここにコードを貼り付けた2番目に問題が見つかりました。

$(this).keypress(function(e){ この行を削除したところです。必要なのはそれだけです。

4

2 に答える 2

1

あなたは毎回あなたにkeypressイベントをバインドしています. これが、発生するイベントの数が増え続けている理由です。そうしないでください。ラッパーを削除するだけの場合、これはまさに必要なことを行うはずです。#quantity_soldkeypress$(this).keypress(function(e){

于 2013-02-06T00:26:22.353 に答える
0

重複した内部キー押下イベント ハンドラーを取り除きます。コードを次のように変更します。

 $(document).ready(function () {

        $("#quantity_sold").keypress(
            function (event) {

            var num = 0;
            console.log('key pressed');

            var code = (e.keyCode ? e.keyCode : e.which);

            if(code == 13){
                e.preventDefault();
                quantitySold= $("#quantity_sold").val();
                rowTotal = parseInt(quantitySold) * unitPrice;
                row = "";
                insertRow();
                console.log("Num inside if statement:" + num);

                $("#inventory_name").val("");
                $("#quantity_sold").val("");
                $("#inventory_name").focus();
                return false;
            }
          console.log("Num outside of if statement:" + num);
          num++;  

       }
  );

    });
于 2013-02-06T00:36:18.927 に答える