0

私が持っているのは、税金を計算するためのフォームです。clone() JavaScript 機能を使用していますが、少し問題があります。たとえば、基本給と主要な税金を次のように保存するとします。

基本給5万円

一次税 $50

この下には、複製されるフィールドを受け取る入力を持つ行 (newtaxrow) と、id clonetax を持つボタンがあります。したがって、JavaScript:

$("#clonetax").click(function() {

        $("#newtaxrow:last").clone(true).insertAfter("#newtaxrow:last");
        $("#newtaxrow:last").find( ":input" ).val( "0" );
        $("#newtaxrow:last").find( ":input" ).change(dave()); 
});

方法dave():

function dave() {

    var val1 = parseInt(document.getElementById('salary').innerText);
    var val2 = parseInt(document.getElementById('tax').value);
    var val3 = parseInt(document.getElementById('newtaxfield').value);
    var total = val1 - (val2 + val3);
    document.getElementById("net").innerHTML = total;
}

したがって、本質的には、複製されたフィールドの値をその場で合計または合計する必要があります。クローンされたフィールドでは機能しません。何か間違っていることはわかっています... . 何か援助はありますか?ありがとう。

4

4 に答える 4

0
.change(dave())

する必要があります

.change(dave)

また

.change(function() { dave(); })
于 2013-01-17T12:05:47.700 に答える
0

クリックイベントハンドラーの外に変更バインダーステートメントを置いた後に試しましたか?

$("#clonetax").click(function() {
        $("#newtaxrow:last").clone(true).insertAfter("#newtaxrow:last");
        $("#newtaxrow:last").find( ":input" ).val( "0" );
});
$("#newtaxrow:last").find( ":input" ).change(dave); 
于 2013-01-17T12:06:01.297 に答える
0

#id (#newtaxrow) で選択し、そのクローンを作成します。

次に、同じ #id を持つ 2 つの行があり、最初の #id のみが選択されます。ドキュメント内のすべての ID は一意であると見なされるため、最初の ID の後に検索を続ける必要はありません。最初に一致したものだけを常に返します。

私はあなたのためにここに例を作りました: http://jsfiddle.net/xZ8xX/

ご覧のとおり、ID #row を持つ 2 つの div があるのに、アラートは 1 つしか表示されません。

を変更してみてください

$('#newtaxrow') to $('.newtaxrow')

次に、'newtaxrow' を ID として使用することから CLASS に変更します。または、少なくとも同じ ID を持つ 2 つの行の使用をやめてください :-)

于 2013-01-17T12:14:26.293 に答える
0

複数の要素に同じ ID を使用することはできません。あなたの場合、Idの代わりにクラスセレクターを使用してください。

例えば:

('#idname') の代わりに ('.classname') @DoXicK が提案

于 2013-01-17T12:20:38.917 に答える