使用条件的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