Html.CheckBox событие onclick сбрасывается - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь сгенерировать серию флажков, которые обновят диапазон, чтобы отследить количество проверенных флажков (показывает что-то вроде «4 из 12 флажков»).Я создал функцию JavaScript updateSelected, которая обрабатывает это, но для этого требуется идентификатор диапазона и класс флажков, поэтому я попробовал этот код для создания каждого флажка:

@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 в вашем предложении)?

Примечание 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);
    });
});

1 Ответ

1 голос
/ 13 января 2012

Очень странно, что апострофы кодируются. Я не думал, что они будут, и после быстрого теста они не. Вероятно, что-то еще происходит в этом представлении. Если вы разместите только одну строку в пустом виде, держу пари, у вас не возникнет та же проблема.

Как и для любых других альтернатив, вы можете легко получить количество выбранных флажков, используя jQuery:

var numChecked = $("input:checked[id^=contentprofilestate]").size();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...