用于选择 CheckBoxFor 生成的所有复选框的复选框
A checkbox for selecting all checkboxes generated by CheckBoxFor
我正在使用 CheckBoxFor 创建一堆复选框的表单。我已将 class 添加到这些复选框,但由于 CheckBoxFor 不会将 class 添加到隐藏的错误复选框,因此我无法 select 基于它生成的这些复选框的组。
这是生成的复选框 table 的示例。当我点击 "Select All" 复选框(最上面的一个)时,我希望该列中的所有复选框都被 selected。 我不想要整个 table selected,只想要专栏。
一些相关的HTML:
<td><input type="checkbox" name="selectAll" value="NBTC" /></td>
<td><input type="checkbox" name="selectAll" value="Contractors" /></td>
<td><input type="checkbox" name="selectAll" value="Coordinators" /></td>
<td><input type="checkbox" name="selectAll" value="NGO" /></td>
<td><input type="checkbox" name="selectAll" value="Public" /></td>
我正在使用的 CheckBoxFor 语句示例:
@Html.CheckBoxFor(m => m.NBTCGroup.NBTC_FA_Centroid, new {@class = "NBTC"}
这是我正在使用的 JS,但由于它是 selecting 基于 class,它不适用于 select 和 unselect 都是因为 false 复选框没有添加 class。
$(document).ready(function () {
$('input[name="selectAll"]').click(function () {
var source = $(this);
var sourceName = $(this).val();
if (sourceName == 'NBTC') {
var checkboxes = document.querySelectorAll('input[class="NBTC"]');
}
else if (sourceName == 'Contractors') {
var checkboxes = document.querySelectorAll('input[class="Contractors"]');
}
else if (sourceName == 'Coordinators') {
var checkboxes = document.querySelectorAll('input[class="Coordinators"]');
}
else if (sourceName == 'NGO') {
var checkboxes = document.querySelectorAll('input[class="NGO"]');
}
else if (sourceName == 'Public') {
var checkboxes = document.querySelectorAll('input[class="Public"]');
}
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i] != source)
checkboxes[i].checked = source.checked;
}
});
是否有人对其他方法有任何想法?
根据您的代码,我假设您正在向每组复选框添加 NBTC
、Contractors
等 类...您还有几个 selectAll
复选框,每组。
您可以这样更改 jQuery:
$('input[name="selectAll"]').click(function() {
var className = $(this).val(); // <-- get the group: NBTC, Contractors, etc
$('.' + className).prop('checked', this.checked);
// generates something like this: $('.NBTC').prop('checked', this.checked);
});
我已将 this answer 用于 check/uncheck 逻辑。
我正在使用 CheckBoxFor 创建一堆复选框的表单。我已将 class 添加到这些复选框,但由于 CheckBoxFor 不会将 class 添加到隐藏的错误复选框,因此我无法 select 基于它生成的这些复选框的组。
这是生成的复选框 table 的示例。当我点击 "Select All" 复选框(最上面的一个)时,我希望该列中的所有复选框都被 selected。 我不想要整个 table selected,只想要专栏。
一些相关的HTML:
<td><input type="checkbox" name="selectAll" value="NBTC" /></td>
<td><input type="checkbox" name="selectAll" value="Contractors" /></td>
<td><input type="checkbox" name="selectAll" value="Coordinators" /></td>
<td><input type="checkbox" name="selectAll" value="NGO" /></td>
<td><input type="checkbox" name="selectAll" value="Public" /></td>
我正在使用的 CheckBoxFor 语句示例:
@Html.CheckBoxFor(m => m.NBTCGroup.NBTC_FA_Centroid, new {@class = "NBTC"}
这是我正在使用的 JS,但由于它是 selecting 基于 class,它不适用于 select 和 unselect 都是因为 false 复选框没有添加 class。
$(document).ready(function () {
$('input[name="selectAll"]').click(function () {
var source = $(this);
var sourceName = $(this).val();
if (sourceName == 'NBTC') {
var checkboxes = document.querySelectorAll('input[class="NBTC"]');
}
else if (sourceName == 'Contractors') {
var checkboxes = document.querySelectorAll('input[class="Contractors"]');
}
else if (sourceName == 'Coordinators') {
var checkboxes = document.querySelectorAll('input[class="Coordinators"]');
}
else if (sourceName == 'NGO') {
var checkboxes = document.querySelectorAll('input[class="NGO"]');
}
else if (sourceName == 'Public') {
var checkboxes = document.querySelectorAll('input[class="Public"]');
}
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i] != source)
checkboxes[i].checked = source.checked;
}
});
是否有人对其他方法有任何想法?
根据您的代码,我假设您正在向每组复选框添加 NBTC
、Contractors
等 类...您还有几个 selectAll
复选框,每组。
您可以这样更改 jQuery:
$('input[name="selectAll"]').click(function() {
var className = $(this).val(); // <-- get the group: NBTC, Contractors, etc
$('.' + className).prop('checked', this.checked);
// generates something like this: $('.NBTC').prop('checked', this.checked);
});
我已将 this answer 用于 check/uncheck 逻辑。