如何独立于keyup

时间:2017-05-12 19:10:35

标签: javascript jquery ruby-on-rails

<tbody id="dailysale_tbody">
<tr class="items">
    <td><select id="items_select" name="dailysale[luitem_id]"><option value=""></option></select></td>
    <td><select id="brands_select" name="dailysale[lubrand_id]"><option value=""></option></select></td>
    <td><select id="models_select" name="dailysale[lumodel_id]"><option value=""></option></select></td>
    <td><input class="texts" id="dailysale_qty" name="dailysale[qty]" type="text" /></td>
    <td><input class="texts" id="dailysale_price" name="dailysale[price]" type="text" /></td>
    <td><input class="texts" id="dailysale_total" name="dailysale[total]" type="text" /></td>
    <td><input type="checkbox" class="delete_row"></td>
</tr>

$(function() {
$('#dailysale_qty, #dailysale_price').keyup(function() {
        var last_item = $('.items').find('#dailysale_qty');
        var qty = last_row.find('#dailysale_qty').val();
        var price = last_row.find('#dailysale_price').val();
        var sub_total = last_row.find('#dailysale_total');
        var s_total = qty * price;

            if (isNaN(s_total)) {
                 sub_total.val('0');
                }
            else
            sub_total.val(s_total);
    });
});

我可以在这一行上执行计算。但是,当我使用jquery动态添加行时,计算不适用于其他行。

当计算功能绑定按钮点击时,一切正常。但不是根据需要输入密钥。我想在qtyprice输入字段上使用onkeyup对新添加的行执行计算。

注意,克隆时,id被剥离当前行并分配给新行以供参考。

2 个答案:

答案 0 :(得分:0)

添加新行时,您可能没有注册keyup功能。 你应该这样做:

$('#dailysale_qty, #dailysale_price').unbind('keyup').keyup( function(...

每次添加新行时。

答案 1 :(得分:0)

@Nosyara建议的代码行不起作用。以下是添加新行的方法。注释行是您的建议。

$(function(){
$('#newitembtn').click(function(){
    //$('#dailysale_qty, #dailysale_price').unbind('keyup').keyup(function() {
    var last_row = $('#dailysale_tbody').find('tr:last');
    var newrow = last_row.clone();

    last_row.find('#items_select').removeAttr('id');
    last_row.find('#brands_select').removeAttr('id');
    last_row.find('#models_select').removeAttr('id');
    last_row.find('#dailysale_qty').removeAttr('id');
    last_row.find('#dailysale_price').removeAttr('id');
    last_row.find('#dailysale_total').removeAttr('id');

    newrow.find('#items_select').val('');
    newrow.find('#brands_select').val('');
    newrow.find('#models_select').val('');
    newrow.find('#dailysale_qty').val('');
    newrow.find('#dailysale_price').val('');
    newrow.find('#dailysale_total').val('');


    last_row.after(newrow);

    });

});

});