0

所以我在 html 表中添加了一行。我在行中有一个复选框,因此我需要增加要添加的输入的数组键,以便检查复选框是否已设置。这是html

<tr>
   <td><img src="/pics/deleteRow.png" class="delete"> </td>
   <td class="productColumn">

   <select name="productInputName[<?php echo $rowNum; ?>]" class="productSelect" >
     <option></option>
     <?php
     foreach($productList as $product){
        //Get options
      }
      ?>
     </select>

      </td>
      <td><input class="quantityField" name="quantity[<?php echo $rowNum; ?>]"type="number" <?php echo ' value="',$detail->getQuantity(),'"';   ?>></td>
      <td><input class="quantityReturnedField" name="quantityReturned[<?php echo $rowNum; ?>]" type="number" <?php echo ' value="',$detail->getQuantityReturned(),'"';   ?>></td>
      <td> <input class="priceField" name="price[<?php echo $rowNum; ?>]" type="number" step="any"
             <?php echo ' value="', $detail->getPrice(), '"'; ?>></td>
      <td ><input class="subtotalField" type="number" step="any" readonly="readonly"></td>
      <td ><input class="specialOrder" type="checkbox" name="specialOrder[<?php echo $rowNum; ?>]" <?php if($detail->getSpecialOrder()){ echo 'checked="checked"';} ?>>Special Order</td>

 </tr>

这是 jQuery

var rowNum = 300;

$('.productSelect').change(function() {
    insertBlankRow(1);
});

function insertBlankRow(numRows){
    for(i=0;i < numRows; i++){
        $('#orderTable tbody>tr:last').clone(true).insertAfter('#orderTable tbody>tr:last').end()
            .find("input[type=checkbox]").attr('name', "specialOrder[" +rowNum + "]").end()
            .find(".productSelect").val("").attr('name', "productInputName[" +rowNum + "]").end()
            .find(".quantityField").val("").attr('name', "quantity["+rowNum+"]");

        rowNum++;
    }

    return false;
}

我已经复习了这个和这个,在我看来它应该可以工作,但实际上它只是从最后一行复制索引号,除了我得到索引的 NaN 的特殊订单复选框。我已将 jQuery 中的名称更改为没有影响,因此它正确插入了行,但未能对名称属性进行任何更改。有什么我想念的想法吗?

4

1 回答 1

1

当我将它与您正在使用的表一起使用时,这对我有用。它添加了一个索引为 301 的行,然后添加了一个 302 和另一个 303 的行。(我填写了一点,因为没有看到所有具有相同索引的字段困扰着我。

var rowNum = 300;

$('.productSelect').change(function() {
   insertBlankRow(1);
});

function insertBlankRow(numRows){

    for(i=0;i < numRows; i++){

        $('#orderTable tbody>tr:last').clone(true).insertAfter('#orderTable tbody>tr:last').end()
        .find(".quantityField").val("").attr('name', "quantity["+rowNum+"]").end()
        .find(".quantityReturnedField").val("").attr('name', "quantityReturned["+rowNum+"]").end()
        .find(".priceField").val("").attr('name', "price["+rowNum+"]").end()
        .find(".productSelect").val("").attr('name', "productInputName["+rowNum+"]").end()
        .find("input[type=checkbox]").attr('name', "specialOrder[" +rowNum + "]");
        rowNum++;
    }

    return false;
}

在此处查看上传的测试:http ://www.davideugenepratt.com/stack-overflow-samples/add-row-to-table.html

于 2013-10-22T01:25:49.663 回答