ブートストラップ モーダルと asp.net mvc の検証が連携して開始されません。ブートストラップモーダルにいくつかの検証が表示された複雑なフォームがあります。残念ながら、送信ボタンを押しても検証がまったく機能しません。
フォームは、標準の asp.net mvc 検証を使用します。以下は、それがどのように構築されているかを理解するための一部です。
@using (Html.BuildForm().AddClass("form-horizontal").Id("contact-add-popup").EncType(FormEncType.MultipartData).Begin()) {
@Html.AntiForgeryToken()
@Html.Partial("_Alerts")
<div class="control-group">
<div class="control-group company-field">
@Html.BuildLabelFor(m => m.Name).AddClass("control-label")
<div class="controls">
@Html.BuildTextBoxFor(m => m.Name).AddClass("input-xxlarge")
@Html.ValidationMessageFor(m => m.Name)
</div>
</div>
(...)
これが私のモーダルです:
<div id="createContactModal" class="modal hide fade modal-contact" tabindex="-1" role="dialog" aria-labelledby="createContactModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-header">
<h4 class="modal-label" id="createContactModalLabel">Add contact</h4>
</div>
<div class="modal-body">
@Html.Partial("_CreateContact", new ContactCreateModel())
</div>
<div class="modal-footer">
<a href="javascript:$('#contact-add-popup').submit();" class="btn btn-primary">Zapisz</a>
<button class="btn" data-dismiss="modal" aria-hidden="true">Zamknij</button>
</div>
そして、検証を機能させることを望んでいるJavaScript:
$('#createContactModal').on('shown', function () {
$("#contact-add-popup").removeData("validator");
$("#contact-add-popup").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("#contact-add-popup");
});
$('#contact-add-popup').on('submit', function(e){
e.preventDefault();
$.validator.unobtrusive.parse($("#contact-add-popup"));
if ($('#contact-add-popup').valid()){
alert('AJAX');
}
});
行 if ($('#contact-add-popup').valid()) は常に true を返します。モーダルと検証を機能させるにはどうすればよいですか?