重复行

时间:2013-02-06 00:24:06

标签: jquery keypress keyup

我在用户点击 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++;
    });
});

至少在这一周中苦苦挣扎,我在第二次粘贴代码时发现了问题。

我刚刚删除了$(this).keypress(function(e){this line。这就是我需要做的全部。

2 个答案:

答案 0 :(得分:1)

每次keypress时,您都会将#quantity_sold个事件绑定到keypress。这就是为什么火灾事件的数量持续增加的原因。不要那样做。如果您只删除$(this).keypress(function(e){包装器,这应该完全符合您的要求。

答案 1 :(得分: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++;  

       }
  );

    });