ボタンをクリックしてさらにフィールドを追加できるフォームがあります。これは、複製、名前の変更、およびdivのフィールドの付与によって行われます。複製された入力が選択されていません
$("#add").click(function(){
var linha = $("#linha").clone();
var num = $("#cont").val();
var novo = parseInt(num) + 1;
novo = novo.toString();
linha.find('#FaturamentoHoraExtra'+num+'Nome').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][nome]'});
linha.find('#FaturamentoHoraExtra'+num+'Nome').val('');
linha.find('#FaturamentoHoraExtra'+num+'Responsabilidade').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][responsabilidade]'});
linha.find('#FaturamentoHoraExtra'+num+'Responsabilidade').removeAttr("selected");
linha.find('#FaturamentoHoraExtra'+num+'MaodeobraId').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][responsabilidade]'});
linha.find('#FaturamentoHoraExtra'+num+'MaodeobraId').removeAttr("selected");
linha.find('#FaturamentoHoraExtra'+num+'Salario').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][salario]'});
linha.find('#FaturamentoHoraExtra'+num+'Salario').val('');
linha.find('#FaturamentoHoraExtra'+num+'Qtd50').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][qtd_50]'});
linha.find('#FaturamentoHoraExtra'+num+'Qtd50').val('');
linha.find('#FaturamentoHoraExtra'+num+'Valor50').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][valor_50]'});
linha.find('#FaturamentoHoraExtra'+num+'Valor50').val('');
linha.find('#FaturamentoHoraExtra'+num+'Qtd100').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][qtd_100]'});
linha.find('#FaturamentoHoraExtra'+num+'Qtd100').val('');
linha.find('#FaturamentoHoraExtra'+num+'Valor100').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][valor_100]'});
linha.find('#FaturamentoHoraExtra'+num+'Valor100').val('');
linha.find('#FaturamentoHoraExtra'+num+'Dsr').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][dsr]'});
linha.find('#FaturamentoHoraExtra'+num+'Dsr').val('');
linha.find('#FaturamentoHoraExtra'+num+'Total').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][total]'});
linha.find('#FaturamentoHoraExtra'+num+'Total').val('');
linha.find('#FaturamentoHoraExtra'+num+'Obs').attr({'name': 'data[FaturamentoHoraExtra]['+novo+'][obs]'});
linha.find('#FaturamentoHoraExtra'+num+'Obs').val('');
linha.appendTo("#bloco");
$("#cont").val(novo);
return false;
});
すべてのフィールドは、一部の機能によって自動的に計算されます。これは私がこれを作った方法です。
$("input[name$='[dsr]']").change(function(){
somaColaborador();
totalDsr();
totalGeral();
});
$("input[name$='[valor_50]']").change(function(){
total50();
somaColaborador();
totalDsr();
totalGeral();
});
$("input[name$='[valor_100]']").change(function(){
total100();
somaColaborador();
totalDsr();
totalGeral();
});
$("input[name$='[porcentagem]']").change(function(){
porcentagemRateio();
});
私は動作しますが、クローン化されたことにより、新しいフィールドは、同じエンド名を持っているものの、「オリジナル」、選択されていません。だから、計算は行われず、なぜ私は理解していない。
ちょうど見えます。 MCVEや少なくとも関連するHTMLマークアップを提供しても、誰かがより良い/より読みやすく保守的な方法で投稿することができると思います。 –
これは、HTMLマークアップが無効で、重複したIDを取得することになります。 'var linha = $("#linha " ).clone(); '** && **' linha.appendTo( "#bloco"); '。 DOM内に同じIDの 'linha'を持つ要素が少なくとも2つありますが無効です。ところで、すべての子孫にも同じことが当てはまります。ここでIDを使用しない方が良いでしょう。 –