复选框添加新行时动态jquery


Checkbox Dynamic jquery when adding a new row

我有一个使用jquery和php复选框的问题。我正在添加行小时,我想添加一个加班复选框,这是在表单上,但当我使用jquery将数据添加到一个新的行,以允许添加多行添加到数据库后,我不能得到它添加复选框我的表单数据如下。

我想添加复选框(被选中/未被选中)以及未选中的0和选中的1的值。

字段名为add_overtime_hours

<!-- this ext section is the Adding Hours on the jobsheet -->
<script type="text/javascript">
var rownumhours = 0;
function addhours(frm) {
rownumhours ++;
<!-- the next part creates the html to add dynamic fields into the Div hoursrow
var hoursrow = '<p id="rownumhours'+rownumhours+'">Start Time: <input type="text" name="add_start[]" size="4" value="'+frm.add_start.value+'">  Finish Time: <input type="text" name="add_finish[]" value="'+frm.add_finish.value+'"> Date: <input type="text" name="add_date[]" value="'+frm.add_date.value+'"> Overtime: <input type="checkbox" name="add_overtime_hours[]" size="1" value="'+frm.add_overtime_hours.value+' "> <input type="button" value="Remove" onclick="removeRow('+rownumhours+');"></p>';
<!-- the next part looks at the partsrow div lower in the page and then appends the values to the row variable above -->
jQuery('#hoursrow').append(hoursrow);
frm.add_start.value = '';
frm.add_finish.value = '';
frm.add_overtime_hours.value = 'N';
frm.add_date.value = '';
}
function removeRow(rnum) {
    jQuery('#rownumhours'+rnum).remove();
}
</script>
<tr>
<td colspan="3" align="left">
    <div id="hoursrow">
        <p>
            <span class="text">Hours Labour :</span></span>
        </p>
        <p>
            <span class="headings"><span class="text"><span class="hours">Start Time:
            <input type="time" name="add_start" size="4" />Finish Time:
            <input type="time" name="add_finish" size="4" />Date:
            <input type="date" name="add_date" size="4" />OVT:
            <input type="checkbox" name="add_overtime_hours" id="add_overtime_hours"  Value="1" size="1" maxlength="1" />
            </span></span>
            <span class="text"><span class="hours">
                <input onclick="addhours(this.form);" type="button" value="Add Labour" />
                </span></span>
        </p>
        <p class="headings"><span class="text"><span class="hours">
          <span class="info">(This row will not be saved unless you click on "Add Labour" first) </span></span></span>
        </p>
    </div>
</td>
<td width="7"></td>
</tr>
<tr>
    <td>&nbsp;</td>
</tr>

谢谢你对我做错的地方给予的任何帮助。

thank you

您的代码中有一些错误。

我修复了它们,所以最后的代码在下面的代码片段中。

为了区分每个字段的名称,我使用了以下标准:

name="add_finish[1]"
name="add_finish[2]"
......

当然,根据字段的名称,每个名称都有不同的前缀。

因此,您可以在服务器端使用这样组织的名称。

var rownumhours = 0;
function addhours(obj, e) {
  rownumhours++;
  var hoursrow = '<p id="rownumhours' + rownumhours + '">Start Time: <input type="time" name="add_start[' + rownumhours + ']" size="4" value="' +
      $(obj).closest('span.headings').find('[name="add_start"]').val() + '">  Finish Time: <input type="time" name="add_finish[' + rownumhours + ']" value="' +
      $(obj).closest('span.headings').find('[name="add_finish"]').val() + '"> Date: <input type="date" name="add_date[' + rownumhours + ']" value="' +
      $(obj).closest('span.headings').find('[name="add_date"]').val() + '"> Overtime: <input type="checkbox" name="add_overtime_hours[' + rownumhours + ']" size="1" value="' +
      $(obj).closest('span.headings').find('[name="add_overtime_hours"]').val() + '"' +
      (($(obj).closest('span.headings').find('[name="add_overtime_hours"]').is(':checked')) ? 'checked' : '') +
      ' "> <input type="button" value="Remove" onclick="removeRow(' +
      rownumhours + ');"></p>';
  jQuery('#hoursrow').append(hoursrow);
}
function removeRow(rnum) {
  jQuery('#rownumhours' + rnum).remove();
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<table>
    <tbody>
    <tr>
        <td colspan="3" align="left">
            <div id="hoursrow">
                <td>&nbsp;</td>
                <p><span class="text">Hours Labour :</span></span></p>
                <p> <span class="headings"><span class="text"><span class="hours">Start Time:
          <input type="time" name="add_start" size="4"/>
          Finish Time:
          <input type="time" name="add_finish" size="4"/>
          Date:
          <input type="date" name="add_date" size="4"/>
          OVT:
          <input type="checkbox" name="add_overtime_hours" id="add_overtime_hours" Value="1" size="1" maxlength="1"/>
          </span></span><span class="text"><span class="hours">
        <input onclick="addhours(this, event);" type="button" value="Add Labour"/>
        </span></span></p>
                <p class="headings"><span class="text"><span class="hours">
          <span class="info">(This row will not be saved unless you click on "Add Labour" first) </span></span></span>
                </p>
            </div>
        </td>
        <td width="7"></td>
    </tr>
    </tbody>
</table>

获取所有add_overtime_hours的示例如下:

$myboxes = $_POST['add_overtime_hours'];
if(empty($myboxes)) {
     echo("You didn't select any boxes.");
} else {
    $i = count($myboxes);
    echo("You selected $i box(es): ");
    for($j=0; $j < $i; $j++) {
         echo($myboxes[$i] . " ");
    }
}
      Show_Overtime: <input type="text" name="add_overtime_hours[]" size="1" value="' + (($(obj).closest('span.headings').find('[name="add_overtime_hours"]').is(':checked')) ? 'checked' : '1' )' ">

谢谢gaetanoM这是一个很好的解决方案。我现在必须从头到尾看一遍才能理解它。谢谢你