textbox keyup事件无法正常工作

时间:2012-03-24 11:21:59

标签: javascript jquery textbox keyup

我使用以下代码根据其他文本框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相乘,我不想要请任何人可以帮助我这个。感谢

1 个答案:

答案 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
});