我有这个代码,当有空格时显示一个弹出窗口。
$.validator.addMethod(
"regex",
function(value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
});
$('#validateForm').validate({
rules: {
product: {
required: true,
term: {regex: /^\s*$/}
}
},
messages: {
product: {
required: "A text is much",
term: "Please avoid spaces"
},
},
showErrors: function (errorMap, errorList) {
$.each(this.successList, function (index, value) {
$('#'+value.id+'').popover('destroy');
});
$.each(errorList, function (index, value) {
$('#'+value.element.id+'').attr('data-content',value.message).popover({
placement: 'top',
trigger: 'manual'
}).popover('show');
});
}
});
发生的事情是,一旦没有空格,弹出窗口就不会被破坏。我做错了什么?
答案 0 :(得分:1)
此正则表达式对空格和空字符串均有效。
如果您只想匹配空格,则应使用此正则表达式:/^\s+$/
答案 1 :(得分:0)
rules
声明的结构如下......
rules: { // <- rules:
field_name: { // <- name attribute of field
rule_name: parameter, // <- rule: parameter
required: true, // example 1
min: 30 // example 2
}
},
现在你的代码:
rules: {
product: {
required: true,
term: {regex: /^\s*$/}
}
},
term
到底应该是什么?为什么regex
内有term
?
term
是规则,则无法将规则(regex
)嵌套在规则(term
)内。term
不是“内置”rule
as per the documentation。term
也不是“自定义”规则。term
是字段name
,则无法在字段(term
)中嵌套字段(product
)。假设你的正则表达式是正确的,它应该是这样的......
rules: {
product: {
required: true,
regex: /^\s*$/
}
},
另外,请记住,如果您的自定义方法返回true
,则该字段会进行验证,如果它返回false
,该字段将无法通过验证并显示错误。