2012-01-12 134 views
0

我试图产生一系列的复选框,将更新的跨度来跟踪已经被选中(复选框数显示类似“12 4检查” )。我创建了JavaScript函数updateSelected它处理的是,但它需要的跨度和类的复选框来算的ID,所以我想这个代码来生成每个复选框:Html.CheckBox onclick事件是越来越逃脱

@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(&#39;StMarySpan&#39;, &#39;StMaryCheck&#39;)" 
type="checkbox" value="true" /> 

我怎样才能获得onclick事件处理程序,以使没有逃脱撇号?或者,有没有更好的方法来完成这个任务(如果是这样,请随意在您的建议中使用jQuery)?

注重:莱斯特

我创建了一个新的项目,并创造了这个观点,它仍然逃脱撇号:

@{ 
    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

是功能实际上是被称为? – Pbirkoff 2012-01-12 23:25:06

+0

没有,但是那是因为内嵌的JavaScript未正确输出。如果我可以通过onclick处理程序正确调用updateSelected(),我很自信。 – 2012-01-13 04:36:56

回答

1

撇号正在被编码是很奇怪的。我不认为他们会这样做,而且在做了快速测试之后他们不会。在这个观点中可能还有其他事情正在发生。如果你把这一行放在空白的视图中,我敢打赌你不会得到同样的问题。

至于其他的替代品,你可以很容易地使用jQuery选择的复选框数:

var numChecked = $("input:checked[id^=contentprofilestate]").size(); 
+0

+1这个答案。使用已经存在的内容进行选择会更容易(并且,您还要避​​免内联JavaScript)。 – JasCav 2012-01-13 00:37:16

+0

我有许多客户,每个都有自己的部分,我想分别统计各组的复选框。这是传递类(编码客户端)和跨度(在客户端的头文件中)的原因。我检查到空的观点,看看我是否能辨认出编码发生的事情,但你必须以正确的方式有什么想法,以确保只有的复选框的正确的子集算的? – 2012-01-13 02:41:08