表单提交上的验证 - 引擎Ajax验证问题

时间:2014-05-14 20:23:22

标签: jquery jquery-validation-engine

使用jQuery Validation-Engine v2.2。 Ajax验证可以正确内联工作。 但是当我想在提交表单之前单独调用它时,即使验证成功,它也总是返回true。

<input type="text" name="EmailAddress" id="EmailAddress" value="" 
       title="Email Address" maxLength="50" size="50"  
       class="validate[required,custom[email],ajax[ajaxEmailCheck]] register_input word_count"/>


$("#EmailAddress").validationEngine("validate");

据我所知,如果验证失败,它应该返回true。但如果成功,这也会返回true。内联验证工作完美。这可能是ajax验证的异步方面吗?我将如何为单个字段执行此操作?

我想在提交中再次执行此操作&#34;再次&#34;是因为我们的一些客户无需进行验证,无论如何都要提交表格。如果任何验证失败,表单确实不应该提交。也不确定为什么会发生这种情况。

在提交表单时似乎没有触发任何ajax验证,只有其他内联验证才会被触发。

我目前将触发器设置为默认模糊,因为我希望他们知道何时出现错误时他们会通过字段。

关于如何使用ajax验证处理这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

我最终做的是对该字段进行函数调用验证并在i中进行非异步ajax调用。如果ajax调用失败,这可以防止表单提交。

<input type="text" name="EmailAddress" id="EmailAddress" value="" 
       title="Email Address" maxLength="50" size="50" 
       class="validate[required,custom[email],funcCall[checkEmail]] register_input word_count"/>


function checkEmail(field, rules, i, options){
    var url = "/api/AjaxEmailCheck/";
    var data = field.attr("id") + "=" + field.val();
    var msg = undefined;
    $.ajax({
        type: "GET",
        url: url,
        cache: false,
        dataType: "json",
        data: data,
        async: false,
        success: function(json) {
            if(!json[1]) {
                msg = json[2];
            }
        }            
    });  
    if(msg != undefined) {
        return msg;
    }
}  

此插件中的ajax验证似乎仍存在一些问题。