2013-02-06 1 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 (기능 (전자) {이 줄을. 그게 내가 할 필요가 전부입니다.

답변

1

당신은 각각의 모든 시간을 당신에게 keypress#quantity_soldkeypress 이벤트를 바인딩하고 있습니다.이 화재 발생 건수가 계속 증가하는 이유는 무엇입니까?하지 말아요 $(this).keypress(function(e){ 래퍼를 제거하면 필요한 작업을 정확하게 수행해야합니다.

+0

대답을 위해. 나는 또한 내 실수를 발견했다. – 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++; 

     } 
); 

    });