Jquery验证器使用ajax提交的有效状态

时间:2013-06-03 18:03:16

标签: javascript jquery jquery-validate

我试图在验证表单后使用ajax发布表单。但是.valid似乎是错误的。

根据按钮需要多种动作类型。

此示例也未在提交时正确显示错误消息

$('#submit').click( function(){
        alert(validator.valid());
    });

$('#submit2').click( function(){
        alert(validator.valid());
        //do something else
    });
如果我输入必填字段(例如姓名)

状态将变为true

this is the fiddle

2 个答案:

答案 0 :(得分:0)

试试这个小提琴 http://jsfiddle.net/r2HUu/4/

它正在运作。我刚检查了表单'$("#myForm").valid()验证

答案 1 :(得分:-1)

引用OP:

  

“我正在尝试在验证表单后使用ajax发布表单”

As per documentation,您的ajax进入submitHandler回调函数。

  

submitHandler (默认:原生表单提交)
类型:功能()
回调   用于在表单有效时处理实际提交。获取表单   作为唯一的论点。替换默认提交。正确的地方   在验证后通过Ajax提交表单。

使用此回调,将自动捕获点击,并且仅在有效表单上触发该功能。

$(function () {

    var validator = $("#myForm").validate({
        // rules and options,
        submitHandler: function(form) {
            // your ajax goes here
            alert("valid form");
            return false;
        }
    });

});

DEMO:http://jsfiddle.net/fXDwd/


引用OP:

  

“然而.valid似乎是错误的。”

修改

根据OP的评论和更新的jsFiddle:

如果您想让多个提交按钮在一个表单上执行不同的操作,请为您已经完成的每个按钮构建click个处理程序。现在,您必须将这些按钮移动到<form></form>容器的外部。否则,该插件会将它们视为普通的submit按钮并干扰您的点击处理程序。

另一个问题是您.valid()的实施。将其附加到form元素$("#myForm"),而不是验证程序初始化对象。

<强> HTML

<form id="myForm" action="">
    ...
</form>
<input type="button" id="submit" value="Submit form" />
<input type="button" id="submit2" value="Submit form2" />

<强>的jQuery

$(function () {
    var validator = $("#myForm").validate({
        // rules and options
    });

    $('#submit').click(function () {
        alert($("#myForm").valid());
        //do something
    });

    $('#submit2').click(function () {
        alert($("#myForm").valid());
        //do something else
    });
});

DEMO:http://jsfiddle.net/vfrGU/