Событие keyup textbox не работает должным образом - PullRequest
0 голосов
/ 24 марта 2012

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

    //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, которое я не хочу 'Может ли кто-нибудь помочь мне в этом.Спасибо

1 Ответ

0 голосов
/ 24 марта 2012

Просто добавьте флажок, чтобы игнорировать движения курсора, как показано ниже

$('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
});
...