0

我正在使用以下代码根据其他文本框 txtQuantity 更新一个文本框值 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 中向前或向后移动光标时,txtUnitPrice 的值正在改变,因为该事件“keyup”正在触发,因此整个代码使用现有的 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 回答