使用条件的jquery验证插件

使用条件的jquery验证插件,jquery,jquery-validate,Jquery,Jquery Validate,我使用验证插件来验证表单,以下是我的规则 $("#creatProfileForm").validate({ ignore: [], //use for hidden fields validation, by default hidden fields are ignored rules : { "firstName" : { required : true, }, "lastName" : {

我使用验证插件来验证表单,以下是我的规则

$("#creatProfileForm").validate({
    ignore: [], //use for hidden fields validation, by default hidden fields are ignored
    rules : {
        "firstName" : {
            required : true,
        },
        "lastName" : {
            required : true,
        },
        "gender" : {
            required : true,
        },
        "password" : {
            required : function(element) {
                if($("#isSocialSignup").val() == "true" || $("#isSocialSignup").val() == true)
                    return true;
            },
            minLength : 6
        }
    },
        messages : {
            "firstName" : {
                required : 'First Name is required',
            },
            "lastName" : {
                required: "Last Name is required",
            },
            "gender" : {
                required : "Gender is required",
            },
            "password" : {
                required : "Password is required",
                minLength : "Lenght should be atleast 6 characters"
            }
        },
        errorPlacement: function(error, element) { //custom location for error placement
            if (element.attr("name") == "gender") {
              error.insertAfter(".temp");
            } else {
              error.insertAfter(element);
            }
          } 
});
更新:如果我删除回调函数并添加“required:true”,它就会工作

我的问题是密码字段,我在视图中存储了一个布尔值,并使用该值决定密码字段的必填项。如果值为true,则需要密码,否则不需要密码

当我提交表单时,控制台上会打印“false”,但密码字段也会显示消息,
“需要密码”

我的代码有什么问题。请帮帮我。 提前感谢

使用依赖选项:

试试这个

rules : {
            "firstName" : {
                required : true,
            },
            "lastName" : {
                required : true,
            },
            "gender" : {
                required : true,
            },
            "password" : {
                required: $("#isSocialSignup").val() == 'true' ? true : false,
                minLength : 6
            }
        },

我认为你的问题很简单,没有像
minLength
这样的方法。你的意思可能是
minlength
。正如@rubyst所建议的,您需要将所需的依赖项更改为:

required: $("#isSocialSignup").val() == 'true' ? true : false,
你用
$(“#isSocialSignup”).val()='true'|$(“#isSocialSignup”).val()==true
,与布尔
true
比较的第二部分,那么
。val()
总是告诉你,如果里面有任何东西,包括单词
“false”
,它就是
真的。所以这可能对你没有帮助

除此之外,我觉得你的代码还不错。尾随逗号太多,会让IE用户不安:

"gender": {
   required: true, //<---- that comma will cause an issue
}, //<--- this one won't because there is something after it
“性别”:{

必填项:true,//引用OP的评论:

“…firebug控制台中出现错误
$。验证。方法[method]未定义

“…如果
required:false
,则会给出相同的错误(
$.validate.method[method]未定义
)并提交表单。”

问题很简单……没有称为
minLength
的方法

该方法称为
minlength
=>注意小写的
l
代替大写的
l


请参阅:

my form Get submit并在firebug控制台“$”中显示以下错误。validate.method[method]未定义“
Dependes
选项不是必需的。在声明规则时,也将使用适当的函数代替
。请参阅:my form Get submit并在firebug控制台中显示以下错误“$.validate.method[method]未定义”我认为您正在将字符串作为参数传递,而字符串没有val()方法…..只需检查againCole.debug($(“#isSocialSignup”).val()),此语句在控制台上打印“false”此$(“#isSocialSignup”).val()='true'?false:我在控制台上尝试了它并给出了错误,I thing“必需的:false”"正在产生一些问题。同时显示此表单的HTML标记。您的
minlength
规则拼写错误。+1…我在发布答案时没有注意到您已经发现
minlength
错误。我也相信这是整个问题的根本原因。.根据我的经验,IE6/7仍然非常普遍,特别是在公司环境中。我很高兴地停止了在IE6/7中使事情变得漂亮的尝试,但至少一切都能正常工作还是很好的!这是非常正确的,但我认为值得指出的是,这不会影响大多数“IE用户”。@Ryley非常感谢,它是有效的,问题在于“L”。当我将它改为“minlength”时,它成功了。非常感谢您的时间和帮助。我第一次看到Ryley的答案时,就在上面做了标记。再次感谢您的帮助和时间。
required: $("#isSocialSignup").val() == 'true' ? true : false,
"gender": {
   required: true, //<---- that comma will cause an issue
}, //<--- this one won't because there is something after it