【问题标题】:Why XmlHttpRequest is sent though ClientValidation is failed?为什么在 ClientValidation 失败时发送 XmlHttpRequest?
【发布时间】:2011-01-12 17:16:28
【问题描述】:

我在页面上有很多 AJAX 表单,点击按钮时我需要全部提交。常规 **forms.each(function (index, form) { $(form).submit();} 对我不起作用,因为这样最终只会提交最后一个表单。因此,我需要通过$.ajax(...)。但我只想启用提交,并且仅当表单有效时才启用

在“submitForms”点击函数“submitTest”被调用。 如果表单是 VALID,将从 jQuery 文档中调用“submitHandler”。 因此,验证有效,如果表单无效,则不会调用“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>

【问题讨论】:

    标签: javascript asp.net jquery jquery-validate


    【解决方案1】:

    已编辑

    很可能是因为 Ajax.BeginForm 设置了 onclick 和 onsubmit 处理程序。这可能会在您的验证提交处理程序之前首先触发。

    更新 如果您想在计划通过jQuery.ajax 提交表单的模块中继续使用 ajax 表单,您可以执行以下操作。

    $(function() {
       $('.form-container').removeAttr('onsubmit').removeAttr('onclick');
    });
    

    这将删除 Ajax.BeginForm 放在 form 标记上的处理程序。不过,您需要一种方法来不将此脚本包含在其他模块中。

    【讨论】:

    • 但是,我在它之前启动了验证,因此在 $(form).submit() $(form).validate() 应该被触发并且只有当表单是有效的它才会被提交,是不是吗?
    • 那么,我该如何解决这个问题。我想保留“
    • 我更新了我的问题。请帮帮我。这对我来说很紧急。
    • @user573082 如果您通过 jQuery 的 $.ajax 调用提交表单,为什么还需要它来保持 Ajax.BeginForm?
    • 首先,这有助于我保存表单的操作方法。因为这个模块可以在不同的模块中。这是一种动态模块。如果它在第一个模块内,那么请求是通过 $.ajax 发送的,如果它在第二个模块内,那么请求将通过单击隐藏的提交按钮来发送。
    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 2014-10-03
    • 2018-12-08
    • 2018-01-06
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多