2011-12-26 104 views
7

我有以下形式:验证的jQuery后提交表单

<form id="form" action="comments.php" method="post"> 
    <ul> 
    <li><div class="formbox_titles">Name</div><input type="text" name="name" class="required comm_input" /></li> 
    <li><div class="formbox_titles">Email</div><input type="text" name="email" class="required comm_input"/></li> 
    <li><div class="formbox_titles">Message</div><textarea name="message" class="required comm_text"></textarea></li> 
    <li><input type="submit" value="Submit"></li> 
    </ul> 
</form> 

及以下JQuery的表单提交:

target: '#preview', 
    success: function() { 
    $('#formbox').slideUp('fast'); 
} 

现在的问题是,我也有表单验证的jQuery代码

$().ready(function() { 
    // validate comment form 
    $("#form").validate({ 
    }); 
}); 

他们都工作得很好,窗体弹出警告,所有三个字段不能为空,但形式内的日期无论如何都被提交到数据库中。我使用下面的代码进行表单验证http://bassistance.de/jquery-plugins/jquery-plugin-validation/所以问题是如何添加第一个jquery第二,所以首先将被执行一旦所需的字段被填充?

希望有人会帮助。谢谢。

回答

3

我不知道您的验证插件什么,但通常ü可以使用的代码

<script> 

    $("form").submit(function() { 
     if (validationIsTrue()) { 
     return true; 
     } 
     else { 
     return false; 
     } 
    }); 
</script> 

你必须让你验证,然后返回true/false,以表单的提交功能这一和平。如果插件不返回一个布尔值,你可以尝试这样的事:

$("form").submit(function() { 
    return $(this).validate({ .... }); 
}); 
8

从你的榜样,我并不清楚你的页面的控制流,但是,我假设你所呼叫的submit()方法某处。验证完表单并提交之前,请使用valid()方法检查验证。你的代码应该是这个样子:

$("#form").validate(); 
if ($('#form').valid()) 
    $('#form').submit(); 
2

当你说“日期内提交表单”这是没有意义的,因为我在你的代码段,我什么也看不到所谓的“约会”。

我用.validate()广泛插件... 我可以告诉你,可以帮助是,验证您正在使用插件具有您可以使用submitHandler功能...

// validate comment form 
$("#form").validate({ 
submitHandler : function(form) { 
    //do something here 
    form.submit(); 
} 
}); 

仅当符合所有验证规则时才会调用submitHandler。即在你的情况下,你有三个“必需”字段,这意味着除非所有三个字段都有值,否则不会提交此表单。因此,我可以肯定地告诉你,用提供的信息没有任何东西可以表明你描述的问题。提供更多更好的信息将帮助我们找出问题所在。

9

如果您想手动提交表单,则必须绕过jQuery绑定事件。您可以通过以下两种方式做到这一点:

$('#form_id')[0].submit(); 

$('#form_id').get(0).submit(); 

[0]或得到(0)为您提供了DOM对象而不是jQuery对象。

+1

感谢您指出......正在寻找这个,因为我有一个事件绑定提交表单,但在我实际发送表单之前,我必须做一个AJAX请求,如果条件为真,我提交表单并在那里我需要绕过。 +1 – 2016-01-27 09:16:49