我正在做一个表单验证,我的代码有问题:
var reValue = /^\s*$/;
var phoneClass = /(^|\s)phoneValidate(\s|$)/;
var phoneValue =
/^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$/;
for (var i=0; i < iLen; i++) {
el = allElements[i];
if(phoneClass.test(el.className) && reValue.test(el.value)){
// The field is empty.
aMessages += 'Please enter a phone number in: '+ el.name +'.\n';
}
else if (phoneClass.test(el.className) && phoneValue.test(el.value)) {
// The field is not a valid phone number
// Advise user to fix it
aMessages += 'Please enter a valid phone number in: '+ el.name +'.\n';
}
}第一个IF语句工作,并在字段为空时显示消息,而ELSE if由于某种原因没有...我做错了什么?
发布于 2012-05-17 04:14:38
基于您的正则表达式,我认为您需要颠倒phoneValue测试上的逻辑。您希望在与phoneValue正则表达式不匹配时执行else if子句,如下所示:
else if (phoneClass.test(el.className) && !phoneValue.test(el.value)) {发布于 2012-05-17 04:13:13
phoneValue.test(el.value)解析为false。这就是else if没有触发的原因。
https://stackoverflow.com/questions/10625946
复制相似问题