2017-01-25 3 views
0

こんにちは人なしで私は(AJAX要求からの行を追加します)動的テーブルを持っていると私は合計を必要とし、(トリガーイベントなし)常に値を掛けます。jQueryの和または乗算値は常にイベントトリガー

私は、イベント(ぼかし)とそれを作る、すでに機能を持っていますが、私はぼかしトリガーを使用してそれを作るたくありません。

それを行うための方法はありますか?

マイコード:

$.fn.sumValues = function() { 
    var sum = 0; 
    this.each(function() { 
    if ($(this).is(':input')) { 
     var val = $(this).val(); 
    } else { 
     var val = $(this).text(); 
    } 
    sum += parseFloat(('0' + val).replace(/[^0-9-\.]/g, ''), 10); 
    }); 
    return sum; 
}; 

function totaliza() { 
    var total_recep = $('input[name^="costot"]').sumValues(); 
    $('#total_art').val(total_recep); 
} 
var counter = 0; 
$(document).on('click', '#bt_add', function(e) { 
    counter++; 
    var tr = '<tr id="art_' + counter + '">'; 
    tr = tr + '<td><button name="del_art' + counter + '" id="del_art' + counter + '" class="btn btn-default btn-xs del_art" type="button">DEL</button></td>'; 
    tr = tr + '<td><input name="cbarra' + counter + '" id="cbarra' + counter + '" class="form-control" value="02020202" readonly></td>'; 
    tr = tr + '<td><input name="art' + counter + '" id="art' + counter + '" class="form-control" value="ARTICULO" readonly></td>'; 
    tr = tr + '<td><select name="und' + counter + '" id="und' + counter + '" class="form-control list"></select></td>'; 
    tr = tr + '<td><input name="cal' + counter + '" id="cant' + counter + '" class="form-control numeric cal" value="0"></td>'; 
    tr = tr + '<td><input name="cal' + counter + '" id="costou' + counter + '" class="form-control numeric cal" value="0"></td>'; 
    tr = tr + '<td><input name="costot' + counter + '" id="costot' + counter + '" class="form-control cal" readonly value="0"></td>'; 
    tr = tr + '</tr>'; 
    $("#inv_recep_det tbody").append(tr); 
    $('.form-control').change(function() { 
    var number = this.name.replace('cal', ''); 
    var costot = ($('#cant' + number).val() * $('#costou' + number).val()) 
    $('input[name^="costot' + number + '"]').val(costot); 
    totaliza(); 
    }); 
    $('.del_art').click(function() { 
    var number = this.name.replace('del_art', ''); 
    $('#art_' + number).remove(); 
    totaliza(); 
    }); 
}); 

https://jsfiddle.net/JuJoGuAl/kpLs9zcg/

そのような何か? http://jsfiddle.net/JuJoGuAl/0vx64u2y/

+0

カスタムトリガーを作成することができます - いつあなたはそれが起こりたいのですか?ぼかしやフォーカスや変更がない場合は?カスタムトリガーはいつでも呼び出すことができます。あなたは私がLIVEQUERYを使用して、それをやってと思っていhttps://learn.jquery.com/events/introduction-to-custom-events/ – Snowmonkey

+0

を読んだ、私は、「ユーザー・エラーによって作成することができ、すべての理由のエラーを回避したいです"@Snowmonkey – JuJoGuAl

+0

私はそれを動作させるために何ができるカスタムトリガーですか? – JuJoGuAl

答えて

1

コメントを続けるのではなく、回答が良いと思われました。現在、あなたは:

$(".form-control).change(...) 

を使用して更新をトリガーします。一部のブラウザでは、実際に要素をトリガーする要素にフォーカスを失うことがあります。その代わりにその行を変更:

$(".form-control").on("input", function(){ ... }) 

この

は、ここで議論されている。それ以外は

What is the difference between "change" and "input" event for an INPUT elementは、私はあなたのフィドルに変更を加えていないました:https://jsfiddle.net/snowMonkey/kpLs9zcg/5/

+0

これはまさに私が探しているが、私は「入力」トリガを聞いたことがないもので、素晴らしいです!ありがとう、たくさんの男! <3 – JuJoGuAl

+1

お手伝いできることを嬉しく思います。がんばろう! – Snowmonkey