2012-03-24 178 views
0

我正在使用以下代碼更新一個基於其他文本框txtQuantity的文本框值txtUnitPrice,兩者都可以動態生成,完成。textbox keyup event not working properly

//update unitprice based on quantity of product and tax applied 
    $('input').live('keyup', function() { 
     var inputId = $(this).attr('id'); //get textbox txtQuantity id 
     var rowNum = parseInt(/txtQuantity(\d+)/.exec(inputId)[1], 10); //get row id 
     var productValue = $("#ddlProduct" + rowNum).val(); 
     var taxValue = $("#ddlTax" + rowNum).val(); 
     var unitPriceValue = $("#txtUnitPrice" + rowNum).val(); 
     var quantityValue = $("#txtQuantity" + rowNum).val(); 


     if ((quantityValue != " ") && (quantityValue > 0)) { 
      $("#txtUnitPrice" + rowNum).val(unitPriceValue * quantityValue); 
     } 
     else { 
      $("#txtUnitPrice" + rowNum).val(unitPriceValue); 
     } 

    }); 

現在,在上面的代碼中所產生的問題是,當我甚至向前或向後移動光標在文本框中txtQuantity然後txtUnitPrice值被改變監守此事件「KEYUP」被焙燒,並因此執行整個代碼與現有的txtunitprice價值,再乘以現有的txtquantity,我不''請任何人都可以幫我這個。由於

+0

代碼執行每次也就是罰款,但值改變,每次不是很好(這應該是因爲它是直到你不改變文本框的價值),我得到了你不想要的,但你想要什麼? – 2012-03-24 11:33:32

回答

0

只需添加一個檢查,忽略光標移動像圖所示

$('input').live('keyup', function (e) { 
    if([37, 38, 39, 40].indexOf(e.which)){ 
     return false;//do nothing because the cursor keys have been pressed 
    } 
    //the rest of your code 
});