2012-03-24 3 views
0

Я использую следующий код для обновления одного значения текстового поля txtUnitPrice на основе другого текстового поля txtQuantity, оба могут генерироваться динамически, что делается.событие keybox keyup не работает должным образом

//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 меняется becuase, который это событие «KeyUp» стреляет и, следовательно, весь код выполняется с существующим значением txtunitprice и умножает это снова на существующее txtquantity, которое я не хочу. Пожалуйста, кто-нибудь может мне помочь в этом. Благодаря

+0

код выполняется каждый раз, что это хорошо, но значение меняется каждый раз, что не в порядке (это должно быть, как это до тех пор, пока не делают изменения значение текстового поля), я получил то, что вы не хотите, но что вам нужно? –

ответ

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 
}); 
Смежные вопросы