テーブルの行に 2 つのコントロールがあり、ボタンをクリックすると、これら 2 つのコントロールを含む新しい行が追加されます。問題は、ボタンをクリックしてコントロールを追加すると追加されますが、新しいコントロールに対して jQuery コードが起動されないことです。
コードのどこに問題がありますか?
<table id="tblIncidentProductOption">
<tr>
<th>Product</th>
<th>Quantity</th>
</tr>
<tr class="Row">
<td><input type="text" name="p0" id="p0" value="0"/></td>
<td><input type="text" name="q0" id="q0" value="0"/></td>
<td>
<div data-corners="true" id="deldev" class="ui-btn ui-shadow
ui-btn-corner-all ui-btn-inline ui-btn-icon-notext ui-btn-up-a"
aria-disabled="false">
<span class="ui-btn-inner"><input type="hidden"
id="d0" class="ui-btn-hidden" name="d0"
onclick="$(this).closest('tr').remove();" />
<span class="ui-btn-text"></span>
<span class="ui-icon ui-icon-delete ui-icon-shadow">
</span>
</span>
</div>
</td>
<td class="tot">
<input type="text" disabled="disabled" id="t0" value="0" class="total" />
</td>
</tr>
</table>
The jQuery code for the button click:
$('#btnAddOption').on('click', function () {
var $tr = $('#tblIncidentProductOption')
.find("tr:last").clone();
$tr.find("input").attr("name", function () {
var parts = this.id.match(/(\D+)(\d+)$/);
return parts[1] + ++parts[2];
}).attr("id", function () {
var parts = this.id.match(/(\D+)(\d+)$/);
return parts[1] + ++parts[2];
}).attr("value", "0");
// $tr.find("td input").each(function () { $(this).attr("value", "0");});
$tr.find("td:nth-child(3)").show();
$tr.find("input[type='hidden']").attr("type", "button");
$('#tblIncidentProductOption')
.find("tr:last").after($tr);
});
2 つのテキスト ボックスの値を結合し、2 つの隠しフィールドを追加するための jQuery コード:
$('#tblIncidentProductOption tr').each(function () {
$("input").each(function () {
$(this).keyup(function () {
var sum = "";
var thisRow = $(this).closest('tr');
var total = "";
$(thisRow).find("td:not(.tot) input").each(function () {
sum = sum + '-' + $(this).val();
});
sum = sum.slice(1).slice(0,-1);
$(thisRow).find(".total").val(sum);
$('input[class*="total"]').each(function () {
total = total + '|' + $(this).val();
});
//$('#tblIncidentProductOption tr').each(function () {
// alert('tr');
// $('td:nth-child(4) input').each(function () {
// total = total + '|' + $(this).val();
// });
//});
total = total.slice(1).slice(0,-1);
$('#result').val(total);
return false;
});
});
});