1

在澳大利亚,我们的区号为 02,03,07,08,但是当我尝试将 04 输入字段时,它允许在不应该允许的情况下提交表单。

我想知道是否有人知道如何解决这个问题。

function phtest(){
OTHERRegex = /^[07]{2}[0-9]{8}$/
NSWRegex = /^[02]{2}[0-9]{8}$/
VICRegex = /^[03]{2}[0-9]{8}$/
WARegex = /^[08]{2}[0-9]{8}$/
if (document.getElementById('phone2').value != '' || NSWRegex.test(document.getElementById('phone2').value)
        || VICRegex.test(document.getElementById('phone2').value) 
        || WARegex.test(document.getElementById('phone2').value)
        || OTHERRegex.test(document.getElementById('phone2').value))
     alert('Please input correct Landline Phone Field\n');
return false;
else
return true;
}
4

3 回答 3

3

当您没有将 if / else 括在花括号中时,您会用分号将其关闭,因此警报会关闭 if,而 return false 什么也不做。

function phtest(){
    var elem = document.getElementById('phone2');
    if (/^[(02|03|07|08)]{2}[0-9]{8}$/.test(elem.value)) {
        return true;
    }else{
        alert('Please input correct Landline Phone Field\n');
        return false;
    }
}

小提琴

于 2013-06-19T05:13:30.167 回答
1

您在 if 语句中错过了花括号。所以,无论如何你都会得到虚假的。

 if (document.getElementById('phone2').value != '' ||   NSWRegex.test(document.getElementById('phone2').value)
            || VICRegex.test(document.getElementById('phone2').value) 
            || WARegex.test(document.getElementById('phone2').value)
            || OTHERRegex.test(document.getElementById('phone2').value))
 { 
^^^
     alert('Please input correct Landline Phone Field\n');
     return false;
 }
^^^
else
{
    return true;
}

我修改了你的代码,你可以试试:

function testPattern(phone){
      var OTHERRegex = /^[07]{2}[0-9]{8}$/,
      NSWRegex = /^[02]{2}[0-9]{8}$/,
      VICRegex = /^[03]{2}[0-9]{8}$/,
      WARegex = /^[08]{2}[0-9]{8}$/;

      return (VICRegex.test(phone)
              || WARegex.test(phone)
              || NSWRegex.test(phone)
              || OTHERRegex.test(phone));
}

function phtest(){
  var phone = document.getElementById('phone2').value;
  var isValid = (phone 
                 && phone.length > 0
                 && testPattern(phone));

  if (!isValid) alert('Please input correct Landline Phone Field\n');

  return isValid;
}
于 2013-06-19T05:15:48.413 回答
0

尝试这个。它适用于几乎所有格式 - +61255555555、0255555555、+61 2 5555 5555、+61-2-5555-5555

function validateLandline(numberStr) {

    var landlineRegex = /^((00|\+)61|0)(2|3|7|8)\d{8}$/;

    return landlineRegex .test(numberStr.replace(/ /g,'').replace(/-/g,''));
}

validateLandline('+61255555555') // true
validateLandline('+61-2-5555-5555') // true
validateLandline('+61 2 5555 5555') // true
validateLandline('0255555555') // true
validateLandline('02 55555555') // true

validateLandline('+61455555555') // false
validateLandline('0455555555') // false and so on
于 2013-06-19T05:34:56.020 回答