So habe ich eine Tabelle, in der der Benutzer etwas eingeben wird und in der letzten Spalte wird es automatisch auf der Grundlage der Eingabe der anderen Spalten ausgefüllt werden. Es funktioniert gut genug, aber sobald ich der Tabelle eine weitere Zeile hinzufüge, füllt es nicht die letzte Spalte wie die ursprüngliche Zeile.jquery funktioniert nicht bei dynamisch hinzugefügten Tabellenzeilen
Also meine Frage ist, was ist falsch und wie kann ich das beheben?
Danke!
Skript für das Hinzufügen von Zeilen:
$('.add_row_count').on('click',function(){
event.preventDefault();
var newRow = $('<tr><td style = "text-align: center;"><input type="text" name="categ_name[]" id="categ_name" value="" placeholder="Item Category" required></td> ' +
'<td style = "text-align: center;"><input type="number" name="beg_count[]" id="beg_count" value="" placeholder="BEG Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="del_count[]" id="del_count" value="" placeholder="DEL Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="ret_count[]" id="ret_count" value="" placeholder="RET Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="exc_count[]" id="exc_count" value="" placeholder="EXC Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="pout_count[]" id="pout_count" value="" placeholder="P-Out Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="sales_count[]" id="sales_count" value="" placeholder="SALES Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="end_count[]" id="end_count" value="" placeholder="END Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="actual_count[]" id="actual_count" value="" placeholder="Actual Count" required></td>' +
'<td style = "text-align: center;"><input type="number" name="variance[]" id="variance" value="" placeholder="Variance" readonly></td>' +
'<td style="border-top: 1px solid white; border-bottom: 1px solid white; border-right: 1px solid white"><button class="del" id="delete_row_count" type="button" onclick="deleterow_count();">Delete row</button></td></tr>');
$('table.count').append(newRow);
});
Skript für die letzte Spalte bevölkert:
$('#categ_name,#beg_count, #del_count, #ret_count,#exc_count, #pout_count, #sales_count,#end_count, #actual_count, #variance').keyup(function(){
var end = $('#end_count').val();
var ac = $('#actual_count').val();
var total_variance = end - ac;
$('#variance').val(total_variance);
});
Geige: https://jsfiddle.net/qhk3ha75/3/
Ein Grund könnte etwas mit der Tatsache, was Sie tun müssen eindeutige ID-Namen haben. Sie können keine Zeilen mit denselben Werten für IDs hinzufügen. – Rasclatt
Mögliches Duplikat von [Ereignisbindung an dynamisch erzeugten Elementen?] (Http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements) – DelightedD0D
Dupe Frage, aber kurz gesagt, benutze '$ (' table '). on (' click ',' .add_row_count ', function() {.... '(das heißt, zusätzlich zu den ids in Klassen ändern) – DelightedD0D