Получил этот HTML из приложения ASP.Net MVC3 (C#):Радиокнопка в радио-группы не рендеринга проверяется при проверке = "проверено"
<div class="row-fluid">
<div class="span4">
<label for="MailPrefBusi">Business Street</label>
<input type="radio" checked="checked" class="validate[groupRequired[MailingPreference]] MailingPreference"
parent_tab="tab4" id="MailPrefBusi" name="MailingPreference" value="1">
</div>
<div class="span4">
<label for="MailPrefBusiPO">Business PO</label>
<input type="radio" class="validate[groupRequired[MailingPreference]] MailingPreference"
parent_tab="tab4" id="MailPrefBusiPO" name="MailingPreference" value="0" disabled="disabled">
</div>
<div class="span4">
<label for="MailPrefHome">Home</label>
<input type="radio" class="validate[groupRequired[MailingPreference]] MailingPreference"
parent_tab="tab4" id="MailPrefHome" name="MailingPreference" value="2">
</div>
</div>
Но при просмотре в браузере, FF, IE9, IE8 и Chrome , радио MailPrefBusi НЕ ВЫПОЛНИТСЯ.
Вот код, который генерирует HTML:
<div class="row-fluid">
@{
String busipref = "";
String popref = "";
String homepref = "";
switch (ViewBag.part.MailingPreference)
{
case 1:
busipref = "checked=\"checked\"";
break;
case 0:
popref = "checked=\"checked\"";
break;
case 2:
homepref = "checked=\"checked\"";
break;
}
}
<div class="span4">
<label for="MailPrefBusi">Business Street</label>
<input type="radio" value="1" name="MailingPreference" id="MailPrefBusi"
parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(busipref) />
</div>
<div class="span4">
<label for="MailPrefBusiPO">Business PO</label>
<input type="radio" value="0" name="MailingPreference" id="MailPrefBusiPO"
parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(popref) />
</div>
<div class="span4">
<label for="MailPrefHome">Home</label>
<input type="radio" value="2" name="MailingPreference" id="MailPrefHome"
parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(homepref) />
</div>
</div>
также этот JQuery код:
if ($("#BusinessAddress1").val() == "") {
$("#MailPrefBusi").attr('checked', false);
$("#MailPrefBusi").attr('disabled', true);
} else {
$("#MailPrefBusi").attr('disabled', false);
if ($("#MailPrefBusi").attr('checked')) {
$("#MailPrefBusi").attr('checked', 'checked');
}
}
if ($("#HomeAddress1").val() == "") {
$("#MailPrefHome").attr('checked', false);
$("#MailPrefHome").attr('disabled', true);
} else {
$("#MailPrefHome").attr('disabled', false);
if ($("#MailPrefHome").attr('checked')) {
$("#MailPrefHome").attr('checked', 'checked');
}
}
if ($("#POAddress1").val() == "") {
$("#MailPrefBusiPO").attr('checked', false);
$("#MailPrefBusiPO").attr('disabled', true);
} else {
$("#MailPrefBusiPO").attr('disabled', false);
if ($("#MailPrefBusiPO").attr('checked')) {
$("#MailPrefBusiPO").attr('checked', 'checked');
}
}
Но до сих пор он не показывает проверил. Это очень важная часть этой формы, и эта радиогруппа ДОЛЖНА иметь хотя бы один элемент, проверенный. Если пользователь не видит, что он проверен, я не уверен, что значение отправляется правильно, либо потому, что у нас были экземпляры, в которых изменение MailingPreference пользователя было изменено до значения, имеющего пустой адрес, и ничего хорошего!
Проверка выполняется с помощью jQuery ValidationEngine.
Я точно не знаю, что здесь происходит. Я искал высоко и низко, чтобы найти ответы, но придумал пустой, и все, что я пытаюсь, имеет тот же результат.
Используйте JQuery .prop() для этого вместо .attr(): HTTP://api.jquery.com/prop/ –
По-прежнему не думайте, что это будет иметь значение. – MB34
@Hanlet Escañ0 - Изменен для использования .prop(), и он сработал., Спасибо. – MB34