2013-02-06 24 views
0

我正在添加額外的表格行,在用戶點擊時輸入鍵。重複行

下面的代碼行事奇怪。它會根據按鍵在輸入字段中按下多少次來添加行。
我只想添加一行,如果輸入被命中。

有人能告訴我下面的代碼有什麼問題嗎?

$(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周掙扎,我發現這個問題我在這裏粘貼代碼中的第二個。

我只是刪除$(本).keypress(函數(E){這一行。這就是我需要做的。

回答

1

你每一次你keypress綁定keypress事件#quantity_sold。這這就是爲什麼事件數量繼續增加的原因,不要這樣做,如果你只是刪除$(this).keypress(function(e){包裝器,它應該完全符合你的需求

+0

謝謝s的答案。我也注意到了我的錯誤。 – u54r

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++; 

     } 
); 

    });