我需要获取选中复选框的值(一次只允许选中一个),并且我有这个详细的代码来执行此操作:
if (!checkboxSelected) {
return;
}
if($("#ckbx_produceusage").is(':checked')) {
rptval = $('#ckbx_produceusage').val();
}
else if($("#ckbx_deliveryperformance").is(':checked')) {
rptval = $('#ckbx_deliveryperformance').val();
}
else if($("#ckbx_fillrate").is(':checked')) {
rptval = $('#ckbx_fillrate').val();
}
else if($("#ckbx_pricecompliance").is(':checked')) {
rptval = $('#ckbx_pricecompliance').val();
}
setEmailAndGenerateValsForUnitReportPair(unitval, rptval);
有没有一种方法可以让这段代码不那么冗长而又不至于让人难以理解?我想动态地将一个类添加到选中的复选框中,然后从之前添加过该类的任何内容中删除它,然后根据当前使用该类装饰的那个来获取 rptval。不过,这似乎有点臭或 Rubegoldbergesque,所以我正在寻找更好的解决方案。
更新
对于 TJ Crowder,这里是 HTML(Razor/ASP.NET MVC 样式):
@foreach (var rpt in reports)
{
@* convert id to lowercase and no spaces *@
var morphedRptName = @rpt.report.Replace(" ", string.Empty).ToLower();
<input class="ckbx leftmargin8" id="ckbx_@(morphedRptName)" type="checkbox" value="@rpt.report" />@rpt.report
}