我正在使用jquery.validationengine.en.js来(自定义)验证我的表单字段。对于一个字段,我使用两个自定义验证。我不想显示字段的验证消息。它应该一次只显示一个消息。怎么做?
请找到以下代码 注意:allzero也被其他一些领域使用。
"phone": {
"regex": /^[0-9]{8,15}$/,
"alertText": "* Invalid phone number"
},
"allzero": {
"regex": /([^((\+)*(0*))])/,
"alertText": "* Invalid number"
},
HTML code:
<input type="text" name="phone" id="phone" class="textBox textNormal validate[maxSize[30],custom[onlyNumberSp],custom[phonenumber],custom[allzero]]" onfocus="jQuery('#adduserform').validationEngine('attach',{Overflown:false})">
<input type="text" name="mobile" id="mobile" class="textBox textNormal validate[maxSize[30],custom[onlyNumberSp],custom[mobile],custom[allzero]]" value="" onfocus="jQuery('#adduserform').validationEngine('attach',{Overflown:false})">
答案 0 :(得分:2)
一种方法是始终在字符串中的某处需要非零数字。这可以通过正则表达式部分[0-9]*[1-9][0-9]*
来完成。但是,您失去了轻松检查字符串长度的能力。这可以通过前瞻性断言来克服,从而产生以下正则表达式:
/^(?=[0-9]{8,15}$)[0-9]*[1-9][0-9]*$/
答案 1 :(得分:1)
查看验证引擎使用说明(位于https://github.com/posabsolute/jQuery-Validation-Engine),似乎可以使用自定义函数调用(funcCall
验证程序)验证字段。因此,您应该能够使用函数一个接一个地检查两个正则表达式,并返回相应的错误消息,如果其中一个不匹配:
function checkPhoneNumber(field, rules, i, options){
if (!field.val().match(/^[0-9]{8,15}$/))
return "* Invalid phone number";
else if (!field.val().match(/([^((\+)*(0*))])/))
return "* Invalid number";
}
答案 2 :(得分:1)
使用函数时,我可以这样做:
"phoneORallzero": {
"func": function(field, rules, i, options){
if (field.val().match(/^[0-9]{8,15}$/))
return true;
else if (field.val().match(/([^((\+)*(0*))])/))
return true;
},
"alertText": "* invalid phone or number."
}
在HTML代码中:
... class = "validate[custom[phoneORallzero]]" ...