Ajax表单忽略验证

时间:2013-05-22 14:35:15

标签: jquery ajax

之前我没有使用过ajax,因此选择了jQuery Form plugin。 我的目的是让插件提交表单,使用我的验证来检查表单字段是否填写正确,如果是这样提交表单。

以上所有工作,验证除外。当我点击“提交”时,验证会短暂显示,然后框会淡出,因为我在ajax表单脚本中设置了成功调用。

var options = { 
    beforeSubmit: validation,
    success: function() {
        var url = '/includes/embed-topbar-login-account';
        $('#account').load(url, function() {
            $('#account-options').fadeOut('slow');
        });
    }
}; 

$('#login').ajaxForm(options); 

function validation() {
    var prompt = '<div class="required-prompt"><small>This field is required.</small></div>';
    var promptEmail = '<div class="required-prompt"><small>Invalid email address.</small></div>';
    var required = true;

        $('.required-prompt', this).remove();
        $('.required', this).each(function() {
            if( !$(this).val() ) {
                $(this).after(prompt);
                required = false;
            } else {
                $('.required-prompt', this).remove();
            }
        });

    return required;
}

如果验证返回'false'(目前正在进行),是否有人可以告诉我是否需要额外的步骤来确保提交暂停。

1 个答案:

答案 0 :(得分:0)

您应指定beforeSubmit

<强> SOURCE Documentation

$('#login').ajaxForm({ 
    success: function() {
        var url = '/includes/embed-topbar-login-account';
        $('#account').load(url, function() {
            $('#account-options').fadeOut('slow');
        });
    }, 
    beforeSubmit: function(arr, $form, options) { 
    // The array of form data takes the following form: 
    // [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] 

    // return false to cancel submit                  
     return validate(); //Assuming validate is your function doing validation.

    }
}); 
相关问题