JQuery.Validate插件可以阻止提交Ajax表单吗

时间:2020-03-06 14:46:01  来源:igfitidea点击:

我正在使用JQuery表单插件(http://malsup.com/jquery/form/)来处理表单的Ajax提交。我还插入了JQuery.Validate(http://docs.jquery.com/Plugins/Validation)进行客户端验证。

我看到的是,验证失败,但我希望它不会阻止表单提交。当我使用传统形式(即非ajax)时,验证失败完全阻止了表单提交……这是我想要的行为。

我知道验证已正确连接,因为在ajax提交发生之后验证消息仍然出现。

所以我想念的是阻止我想要的行为?下面的示例代码。

<form id="searchForm" method="post" action="/User/GetDetails">
        <input id="username" name="username" type="text" value="user.name" />  
        <input id="submit" name="submit" type="submit" value="Search" />   
</form>
<div id="detailsView">
</div>  

<script type="text/javascript">
    var options = {
        target: '#detailsView'
    };
    $('#searchForm').ajaxForm(options);

    $('#searchForm').validate({
    rules: {
    username: {required:true}},
    messages: {
    username: {required:"Username is a required field."}}
    });
</script>

解决方案

就像第一次通过一样,我想知道为什么这条线

$("form").validate({

不引用$(" searchform")。我没有查过,也没有尝试过,但这似乎不匹配。我们是否不想在适当的表格上致电验证?

无论如何,如果这是完全错误的,则该错误不会立即显而易见。 :)

可能是
返回false;
对表格有帮助吗?
:)
我是说:

<form id="searchForm" method="post" action="/User/GetDetails" onSubmit="return false;">

初始化ajaxForm()时,需要添加一个回调函数以与beforeSubmit事件一起使用:

var options = {
        beforeSubmit: function() {
            return $('#searchForm').validate().form();
        },
        target: '#detailsView'
    };

现在,它知道在提交页面之前要检查验证结果。

还要确保所有输入字段都具有"名称"属性和" id"属性。我注意到没有这些,jQuery验证插件将无法正常运行。

...好久不见了,所以我的情况有所改变。目前,我有一个SubmitHandler选项传递给Validate()插件。在该处理程序中,我手动使用ajaxSubmit。我猜这不是解决方案,而是答案。希望能有所帮助。

http://jquery.bassistance.de/validate/demo/ajaxSubmit-intergration-demo.html

var v = jQuery("#form").validate({
    submitHandler: function(form) {
        jQuery(form).ajaxSubmit({target: "#result"});
    }
});