我正在使用验证插件来验证表单,这是我的规则
$("#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”,它就可以了。
我的问题是密码字段,我在视图中存储了一个布尔值,并使用该值我决定密码字段所需。如果value为true,则需要密码,否则不需要。
当我提交表单时,在控制台上我会打印“false”,但仍然会在密码字段中显示消息,"password is required"
我的代码出了什么问题。请帮助我。 提前谢谢
答案 0 :(得分:1)
我认为你的问题很简单就是没有minLength
这样的方法。你可能意味着minlength
。正如@rubyist建议的那样,您需要将所需的依赖项更改为:
required: $("#isSocialSignup").val() == 'true' ? true : false,
您使用$('#isSocialSignup').val() == 'true' || $('#isSocialSignup').val() == true
的那个,与布尔true
进行比较的第二部分,.val()
将始终告诉您true
是否有"false"
任何内容,包括单词"gender": {
required: true, //<---- that comma will cause an issue
}, //<--- this one won't because there is something after it
。所以这可能没有帮助你!
除此之外,你的代码看起来很好。太多的尾随逗号,会让IE用户感到不安:
{{1}}
半相似的工作示例:http://jsfiddle.net/ryleyb/D59ZW/
答案 1 :(得分:1)
引用OP的评论:
“... firebug console
$.validate.method[method] is undefined
中的错误”
和
“...与
required:false
,它会给出相同的错误($.validate.method[method] is undefined
)并提交表单。”
问题很简单......没有一种名为minLength
的方法。
该方法称为minlength
=&gt;请注意小写l
代替大写L
。
答案 2 :(得分:0)
使用依赖选项:http://jqueryvalidation.org/validate/
required: {
depends: function(element) {
return $("#isSocialSignup").val() == "true" || $("#isSocialSignup").val() == true
}
}
答案 3 :(得分:0)
试试这个
rules : {
"firstName" : {
required : true,
},
"lastName" : {
required : true,
},
"gender" : {
required : true,
},
"password" : {
required: $("#isSocialSignup").val() == 'true' ? true : false,
minLength : 6
}
},
答案 4 :(得分:0)
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
$("#creatProfileForm").validate({
rules : {
"firstName" : {
required : true,
},
"lastName" : {
required : true,
},
"gender" : {
required : true,
},
"password" : {
required: ($("#isSocialSignup").val() == "true" || $("#isSocialSignup").val() == true) ? true : false,
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"
}
},
submitHandler: function(form) {
form.submit();
}
});