我在页面上有很多AJAX表单,点击按钮我需要全部提交。常规** forms.each(函数(索引,表单){$(form).submit();}对我不起作用,因为这样只会最终提交最后一个表单。因此,我需要通过$ .ajax(...)。但我想启用提交,仅在表单有效
时启用在“submitForms”上单击调用“submitTest”函数。 从jQuery文档中,如果表单是VALID,则会调用“submitHandler”。 因此,验证工作,如果表单是INVALID,则不调用“submitHandler”。但是,无论如何都会发送XmlHttpRequest,但不会调用“submitHandler”。
我的错误在哪里?或者还有其他方法吗? 谢谢
<% using (Ajax.BeginForm("FormPost", "Customer", null, new AjaxOptions() { HttpMethod = "POST" }, new { @class = "form-container" }))
{ %>
<%: Html.TextAreaFor(m => m.Name, new { width = 440, height = 100 })%>
<input type="button" value="submitForms" />
<% }%>
<script type="text/javascript">
function submitTest(){
var forms = $(".form-container");
forms.each(function (index, form) {
$(form).validate({
submitHandler: function (form) {
$.ajax(
{
....
});
}
});
});
forms.each(function (index, form) {
$(form).submit();
});
}
</script>
答案 0 :(得分:0)
<强> EDITED 强>
很可能是由于Ajax.BeginForm,因为它设置了onclick和onsubmit处理程序。在验证提交处理程序之前,可能会首先触发。
<强>更新强>
如果您希望在计划通过jQuery.ajax
提交表单的模块中继续使用ajax表单,则可以执行以下操作。
$(function() {
$('.form-container').removeAttr('onsubmit').removeAttr('onclick');
});
这将删除处理程序Ajax.BeginForm置于form
标记。您需要一种不在其他模块中包含此脚本的方法。