2013-05-22 126 views
0

我之前没有用过ajax,所以选择了jQuery Form plugin。 我的目标是通过插件提交表单,使用我的验证来检查表单字段是否填写正确,如果是的话提交表单。Ajax表单忽略验证

以上所有工作,除验证外。当我点击“提交”时,验证会短暂地显示,然后该框将淡出,因为我在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; 
} 

谁能告诉我,如果有,如果停止,以确保提交所需的任何额外的步骤验证返回“假”(它目前如此)。

+0

你不是要求使用beforeSubmit代码一个validate方法。您是否阅读过插件文档的验证示例页面? http://malsup.com/jquery/form/#validation – MasNotsram

+0

不是验证更像$('#form')。validate()? –

+0

我曾尝试使用之前提交与我的验证代码,并显示与以前一样,仍然提交。你能在我的代码中看到一个原因吗? – ccdavies

回答

0

你shsould指定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. 

    } 
});