我有一个可选字段(比如说“text1”),可以是空白字符,也可以只是字母数字字段:
jQuery.validator.addMethod("onlyAlphaNumeric",
function(value, element) {
var regExp = new RegExp(/^[a-zA-Z0-9]+$/);
return ((this.optional(element)) || regExp.test(value));
}
, "Only aplaha-numeric characters allowed");
$("#student-search-form").validate({
rules : {
text1 : {
optional : true,
onlyAlphaNumeric: "Only a-n allowed"
}
},
messages: {
text : {
acceptOnly: " Only alpha-numeric characters allowed"
}
}
});
问题是没有验证,所以如果用户在'text1'中输入“!& ^%(*”,表单会被提交,不会进行错误检查。
有人可以告诉我,我做错了什么吗? 谢谢。
答案 0 :(得分:2)
这是错误的......
rules : {
text1 : {
optional : true,
onlyAlphaNumeric: "Only a-n allowed"
}
},
对于onlyAlphaNumeric:
,您只能放true
或false
。
我对optional:
不太确定,但我知道required:
有效...所以请将required:
设置为false
。或者,您可以将其完全保留,因为验证器默认将字段设置为“可选”(required:false
),除非您另行指定。
rules : {
text1 : {
required : false,
onlyAlphaNumeric: true
}
},
看到这个类似的答案......
using the jquery validation plugin, how can I add a regex validation on a textbox?
答案 1 :(得分:0)
您可以在验证方法中添加可选项 -
http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js
jQuery.validator.addMethod("alphanumeric", function(value, element) {
return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");
验证 -
rules : {
text1 : {
alphanumeric: true
}
},
答案 2 :(得分:0)
我认为您的代码必须是这样的:
// Suppose that your method is well defined
jQuery.validator.addMethod("onlyAlphaNumeric",
function(value, element) {
var regExp = new RegExp(/^[a-zA-Z0-9]+$/);
return ((this.optional(element)) || regExp.test(value));
}
, "Only alpha-numeric characters allowed");
$("#student-search-form").validate({
rules : {
text1 : {
required : false, // optional must be replaced by required
onlyAlphaNumeric: true // rules are boolean
}
},
messages: {
text1 : {
onlyAlphaNumeric: "I can change my message : Only alpha-numeric characters allowed"
}
}
});