2012-01-12 133 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