【发布时间】:2014-10-29 18:01:09
【问题描述】:
我有一组动态的行,每个行都有一个下拉列表和复选框,如果选择了某个选项值,我需要在 onChange 上选中所有复选框。
这适用于一组,但是当有多行并且从一行中选择选项值时,onChange 会触发从所有行而不是该特定行中选择所有复选框。
我设置了一个小提琴来澄清我的意思 - 很确定我需要以某种方式获取行计数器并在 onChange 中传递该计数器编号,因此它不会选择所有复选框,而只有正在更改下拉列表的行是在。
<table>
<tr>
<td>
<!--First row eventRegistrations[1]-->
<select name="eventRegistrations[1].eventRegistrationStatusTypeID" id="registrationStatusSelect">
<option value="1">Pending</option>
<option value="2">Attended</option>
</select>
</td>
<td>
<input type="checkbox" name="eventRegistrations[1].markAttendance[1].attendanceDate" value="1">9/21/14
<input type="checkbox" name="eventRegistrations[1].markAttendance[2].attendanceDate" value="2">9/22/14</td>
</tr>
<!--There could be multiple dynamic rows whose input names increment like eventRegistrations[i]-->
<tr>
<td>
<!--Next dynamic row eventRegistrations[2]-->
<select name="eventRegistrations[2].eventRegistrationStatusTypeID" id="registrationStatusSelect">
<option value="1">Pending</option>
<option value="2">Attended</option>
</select>
</td>
<td>
<input type="checkbox" name="eventRegistrations[2].markAttendance[1].attendanceDate" value="1">10/23/14
<input type="checkbox" name="eventRegistrations[2].markAttendance[2].attendanceDate" value="2">10/24/14</td>
</tr>
如果我在 eventRegistrations[1] 中硬编码 1,则第一个下拉菜单更改为“参加”时效果很好。 我认为需要一个计数器以某种方式获取每一行,循环或执行 each() 并根据选择的下拉列表传递计数器编号是 eventRegistrations[i] 基于选择哪个
$("select[name^='eventRegistrations[1]']").change(function () {
if ($(this).val() === '2') {
$("input[name^='eventRegistrations[1]']").prop('checked', true);
/*
var regCount = $(":input[name^='eventRegistrations[i]']").length
for (i = 1; i <= regCount; i++) {
$("input[name^='eventRegistrations[i]']").prop('checked', true);
}*/
}
});
感谢您的帮助!
【问题讨论】:
-
您需要保留这样的名称吗?名称中的方括号很少见
-
@k-nut 是的,如果可能的话,我需要将名称保留在标记中的设置方式!谢谢!!
-
好的,我会尽快为您提供解决方案
标签: javascript jquery html