我在这里回答了我的问题,得到了我所需要的大部分方法:如何获得与复选框关联的标签的值(我是否破坏了 jsfiddle)?
...但我还有另一个相关问题,即“如何使用 jQuery 创建所有选中复选框关联文本的 csv? ”
到目前为止,我所得到的,缺少的部分已被评论,在这里:JS fiddler link
HTML 是:
<button id="btnDept">select Depts</button>
<div id="dialog" title="Select the Depts you want to include in the report" style="display:none;">
<div>
<section class="breakAfter">
<label for="ckbxSelectAll">Select All</label>
<input type="checkbox" id="ckbxSelectAll" />
<label for="ckbxDeselectAll">Deselect All</label>
<input type="checkbox" id="ckbxDeselectAll" />
</section>
<label for="ckbx2">2</label>
<input type="checkbox" id="ckbx2" />
<label for="ckbx3" id="lbl3">3</label>
<input type="checkbox" id="ckbx3" />
</div>
</div>
CSS是:
.breakAfter {
display:block;
}
jQuery是:
var deptsSelected = '';
$("#btnDept").click(function () {
$("#dialog").dialog({
modal: true
});
$("input:checkbox").click(function () {
var checkedVal = $("label[for='" + this.id + "']").text();
if (checkedVal == "Select All") {
$(":checkbox").prop("checked", true);
$("#ckbxDeselectAll").prop("checked", false);
// How can I add all of the vals to deptsSelected (except "Select All" and "Deselect All")?
} else if (checkedVal == "Deselect All") {
$(":checkbox").prop("checked", false);
$("#ckbxDeselectAll").prop("checked", true);
deptsSelected = '';
} else {
if (deptsSelected.indexOf(checkedVal) < 0) {
deptsSelected += $("label[for='" + this.id + "']").text() + ',';
}
}
alert(deptsSelected);
});
});
IOW,我认为,我需要遍历所有标签元素,附加它们的文本值和一个逗号(然后将最后的逗号去掉)。
更新
我更新了jsfiddle以包含我需要的所有复选框:
我在 C# 实用程序中创建了其余的复选框:
private void button1_Click(object sender, EventArgs e)
{
string s = string.Empty;
for (int i = 4; i < 100; i++)
{
s += string.Format("<label for=\"ckbx{0}\">{0}</label><input type=\"checkbox\" id=\"ckbx{0}\" />", i);
}
textBox1.AppendText(s);
}