我正在尝试生成一系列复选框,这些复选框将更新一个范围以跟踪已检查的复选框的数量(显示类似“4 of 12 checked”)。我已经创建了处理它的JavaScript函数updateSelected
,但它需要跨度的ID和复选框的类来计算,所以我尝试使用此代码生成每个复选框:
@Html.CheckBox(string.Format("contentprofilestate[{0}].selected", i),
new { onclick = "updateSelected('" + selectedSpanId + "', '" + checkboxClass + "')" })
这会生成以下HTML:
<input id="contentprofilestate_6__selected" name="contentprofilestate[6].selected"
onclick="updateSelected('StMarySpan', 'StMaryCheck')"
type="checkbox" value="true" />
如何在不转义撇号的情况下渲染onclick
事件处理程序?或者,是否有更好的方法来完成此任务(如果是这样,请随意在您的建议中使用jQuery)?
请注意:Lester
我创建了一个新项目并创建了这个视图,它仍然逃脱了撇号:
@{
ViewBag.Title = "index";
}
<h2>index</h2>
@Html.CheckBox(string.Format("contentprofilestate[{0}].selected", 0), new { onclick = "updateSelected('" + "test" + "', '" + "test2" + "')" })
替代解决方案
我无法弄清楚如何防止撇号被删除,所以我写了一些jQuery逻辑来做我需要的东西而没有任何内联JavaScript:
jQuery(document).ready(function () {
jQuery(':checkbox').click(function () {
var clientHeader = jQuery(this).closest('.client-header');
var clientCheckedSpan = clientHeader.find('.client-checked');
var inputChecked = clientHeader.find('input:checked');
clientCheckedSpan.text(inputChecked.length);
});
});
答案 0 :(得分:1)
撇号被编码是很奇怪的。我不认为他们会这样,经过快速测试他们不是。在那个观点中可能还有其他事情发生。如果你只在空视图中放置那一行,我敢打赌你不会遇到同样的问题。
对于任何其他替代方案,您可以使用jQuery轻松获取所选复选框的数量:
var numChecked = $("input:checked[id^=contentprofilestate]").size();