0

テーブルの行に 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;
        });
    });
});
4

1 に答える 1