【问题标题】:jquery: prevent form submit on ajax validation errorjquery:防止表单提交 ajax 验证错误
【发布时间】:2013-02-14 07:39:47
【问题描述】:

我有一个带有一些 ajax 验证字段的表单。(并非所有字段都使用 ajax 进行验证)

如果其中一个字段出现错误,我想阻止表单提交。

我希望它对我使用 ajax 验证的其他表单具有通用性。

1 个标志不会起作用。

这是错误时 ajax 字段的样子:

<label id="id_name_lab" class="error">name</label>
<input id="id_name" type="text" maxlength="128" name="name">
<label id="id_name_succ_icn" class="icon_succ" style="display: none;"></label>
<label id="id_name_load_icn" class="icon_load" style="display: none;"></label>

【问题讨论】:

  • 您需要更具体地了解“其中一个字段的错误”是什么
  • 我编辑了我的答案。我需要检查表单字段并查找类错误和包含 load_icn 的 id

标签: jquery ajax forms


【解决方案1】:

我的想法是使用回调链。

伪代码

$("form").one( "submit", function() {
    var self = this;

    // ajax validation
    $.ajax( /* ... */ )
        .done( function() {
            // call validation, if form is valid, ajaxValidation calls submit again.
            ajaxValidation( self );
        });

    // first submit is always ignored.
    e.preventDefault();
    return false;
});

function ajaxValidation( target ) {
    // check valid & call submit
}

它需要上面的绑定提交处理程序,当你想要的时候。

【讨论】:

    【解决方案2】:

    使用 Jquery:

     $("form").submit(function(e) {
                    e.preventDefault();
                    return false;
     });
    

    没有jquery:

    return false;
    

    在表单的 onsubmit 元素上。

    【讨论】:

    • 您没有考虑到 ajax 验证字段上的错误
    • 只写你的验证 if(myfield == '') return false; else [提交我的表格] 使用您自己需要的规则。
    • 我不想指定字段名称,我希望它是通用的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多