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 周,当我将代码粘贴到此处时,我发现了问题。

我刚刚删除了 $(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 回答