JQueryを使用してチェックボックス配列を動的に作成し、DOM要素に追加する場合、IE8はチェックボックス配列をフォームの一部として送信しません。FirefoxとChromeで完全に正常に動作します。サーバー側でMVC3フレームワークを使用しています。これをIE8で機能させるための回避策のアイデアはありますか?アドバイスをいただければ幸いです。
モデル:
public int[] SelectedTemplateRequirements { get; set; }
見る:
HTML:
<label for="requirementsTemplateDetail">Requirements:</label><br />
<div id="requirementsTemplateDetail"></div>
JQUERY:
<script type="text/javascript">
/* Fills up the textarea */
function fillTextArea(ctrlName, list) {
// clear div
$('#requirementsTemplateDetail').empty();
$.each( list, function (index, itemData) {
// alert(itemData.Id );
$(ctrlName).append(
$(document.createElement('input')).attr({
name: 'SelectedTemplateRequirements',
value: itemData.Id,
type: 'checkbox',
checked: 'checked'
})
).append(itemData.Name + '<br/><br/>');
})
}
function fillRequirementsDropdown(response) {
fillTextArea("#requirementsTemplateDetail", response.Reqs);
}
function postFormRequirementsByTemplateID(ctrlName) {
var theForm = $(ctrlName).parents('form');
$.ajax({
type: "POST",
url: '@Url.Action("GetRequirementsByTemplateID")',
data: theForm.serialize(),
error: function (xhr, status, err) {
alert("An error occurred while saving\n\n" + err);
},
success: function (response) {
fillRequirementsDropdown(response);
}
});
return false;
}
function auditType_SelectionChanged() {
postFormRequirementsByTemplateID("#AuditTemplateId");
}
$(document).ready(function () {
$("#ClassTypeId").change(function () {
ClassType_SelectionChanged();
});
$("#AuditTemplateId").change(function () {
auditType_SelectionChanged();
});
$('#templateSearchID').click(function () {
auditTemplateButtonPressed();
});
$('#templateAllID').click(function () {
auditTemplateAllPressed();
});
});
</script>
コントローラ:
public class AuditController : ComplianceController
{
[HttpPost]
public ActionResult Create(string submit, AuditDocument document )
{
// Inserts into AuditRequirementDetail table
m_activeContract.insertAuditTemplateRequirements(document, myuser);
}
}
何が起こるかというと、IE 8は、コントローラーのアクション後のメソッドに戻されるまでにSelectedTemplateRequirements
アレイが表示されるため、アレイのバンドルに失敗します。NULL
IE 8にはまだ大規模なユーザーベースがあるため、これに関するアドバイスをいただければ幸いです。