ASP.Net MVC3 (C#) アプリケーションから次の HTML を取得しました。
<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');
}
}
しかし、それでもチェックが表示されません。これはこのフォームの非常に重要な部分であり、このラジオ グループでは少なくとも 1 つの項目をチェックする必要があります。ユーザーがチェックされていない場合、ユーザーの MailingPreference が空のアドレスを持つ値に変更されたインスタンスがあったため、値が正しく送信されるかどうかわかりません。
検証は jQuery ValidationEngine を使用して行われています。
ここで何が起こっているのか正確にはわかりません。答えを見つけるために高低を検索しましたが、空になり、試したすべての結果が同じです。