0

次のコードを使用して、他のテキストボックスtxtQuantityに基づいて1つのテキストボックス値txtUnitPriceを更新しています。どちらも動的に生成できます。

    //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でカーソルを前後に移動すると、このイベント'keyup'が発生するため、txtUnitPriceの値が変更されるため、コード全体が既存のtxtunitprice値で実行されて乗算されることです。これも私が欲しくない既存のtxtquantityでこれについて誰かが私を助けてくれますか?ありがとう

4

1 に答える 1

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
});
于 2012-03-24T12:07:45.430 に答える