2010-03-05 4 views
11

Мне нужно подтвердить номер телефона в javascript. Требования:Проверка номера мобильного телефона на Javascript

они должны быть 10 цифр, ни запятой, ни тире, только цифры, а не 1+ перед

это то, что я написал до сих пор

function validatePhone(field,alerttxt) { 
    with (field) { 
     if(value.length > 10) { 
      alert(alerttext); 
      return false; 
     } 
     for(i = 0; i < value.length; i++) { 
      if(parseInt(value[i]) == NaN) { 
       alert(alerttxt); 
       return false; 
      } 
     } 
     return true; 
    } 
} 
function validateForm(thisform) { 
     if (validatePhone(phone,"Invalid phone number")==false) { 
      phone.focus(); 
      return false; 
     } 

    } 
} 
    <form action="post.php" method="post" id="contactform" onsubmit="return validateForm(this)"> 
    <ol> 
     <label for="phone">Your phone <span class="red"></span></label> 
     <input id="phone" name="phone" class="text" /> 
     </li> 
    </ol> 
    </form> 

но, очевидно это не работает. Как я могу написать функцию validatePhone() так, чтобы она работала?

+6

Какая недружественная система. Пусть люди вводят пробелы и тире, а затем игнорируют их. А как насчет международных телефонных номеров? – Quentin

+0

Это похоже на школьное задание. Для серьезного использования вы не должны * использовать регулярные выражения для правильной проверки номеров телефонов (http://stackoverflow.com/a/4338544/1269037). –

+0

@ DanDascalescu На самом деле, в то время это не было назначением школы. Просто дерьмовая работа на RentACoder –

ответ

29
phone = phone.replace(/[^0-9]/g, ''); 
if(phone.length != 10) { 
    alert("not 10 digits"); 
} else { 
    alert("yep, its 10 digits"); 
} 

Это будет проверять и/или корректировать на основе ваших требований, удаляя все нецифровые.

+1

Почему бы просто не использовать совпадение? – Marius

+5

Как я уже сказал, «подтвердите и/или исправьте», почему не просто совпадают. Его довольно плохой пользовательский интерфейс, чтобы заставить кого-то вводить номер телефона без пробелов или тире, когда их так легко удалить. – Erik

+0

спасибо, мне очень нравится «корректирующее» регулярное выражение :-) –

0

Исправлена ​​функция:

function validateForm(thisform) { 
     if (validatePhone(thisform.phone,"Invalid phone number")==false) { 
      thisform.phone.focus(); 
      return false; 
     } 
     return true; 
} 
+0

Я забыл включить (эта форма) в начале функции, но на самом деле я ее написал) –

+1

Но у вас также есть дополнительный символ «}» – antyrat

7

Вы можете использовать регулярные выражения:

function validatePhone(field, alerttext) { 
    if (field.match(/^\d{10}/)) { 
     return true; 
    } 
    alert(alerttext); 
    return false; 
} 
+0

Вы не должны *, на самом деле, использовать регулярные выражения для правильной проверки номеров телефонов (http://stackoverflow.com/a/4338544/1269037). –

+0

Его требование гласит, что он должен проверить 10-значный формат без чего-либо еще. Таким образом, эта проверка регулярного выражения должна быть в порядке. Вы правы: мне не нравятся приложения, которые заставляют меня указывать определенный формат номера телефона. Проверка минимальной длины для чисел и некоторых() - +/символов в любом порядке может быть в порядке, например, в: '^ [0-9() +/-] {5,} $' – arnep

1

код, чтобы за исключением только номера скобки и дефис

function DoValidatePhone() { 
    var frm = document.forms['editMemberForm'];     
    var stripped = frm.contact.value; 
    var isGoodMatch = stripped.match(/^[0-9\s(-)]*$/); 
    if (!isGoodMatch) { 
     alert("The Emergency Contact number contains invalid characters." + stripped); 
     return false; 
    } 
} 
10

Google, libphonenumber очень полезно для проверки и форматирования номера телефонов во всем мире. Это проще, менее загадочно и более надежно, чем использование RegEx, и оно поставляется в вариантах JavaScript, Ruby, Python, C#, PHP и Objective-C.

+1

* Это *. Люди просто не понимают, что [регулярные выражения - наивные решения] (http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links/21925491#21925491), когда он приходит для проверки реальных данных. –

-1
function validate(phoneString){ 

    reg = /^([+|\d])+([\s|\d])+([\d])$/; 

    return reg.test(phoneString); 

} 
Смежные вопросы