Я пытаюсь создать серию флажков, которые будут обновлять диапазон, чтобы отслеживать количество отмеченных флажков (показывает что-то вроде «4 из 12 проверенных»,). Я создал функцию updateSelected
JavaScript, который обрабатывает, но это требует идентификатора диапазона и класса флажков для подсчета, так что я попробовал этот код, чтобы генерировать каждый флажок: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('StMarySpan', 'StMaryCheck')"
type="checkbox" value="true" />
Как я могу получить обработчик события onclick
для визуализации без возможности избежать апостроф? Кроме того, есть ли лучший способ выполнить эту задачу (если да, не стесняйтесь использовать jQuery в своем предложении)?
Примечание Re: 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);
});
});
ли функция фактически называется? – Pbirkoff
Нет, но это потому, что встроенный JavaScript не выводится правильно. Я уверен, что updateSelected() работает правильно, если я могу заставить его правильно называться с помощью обработчика onclick. –