ここでの質問への回答で、必要なものにほとんどたどり着きました:チェックボックスに関連付けられたラベルの値を取得するにはどうすればよいですか(そして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);
}