Intereting Posts
Выпадающее меню мерцает, за исключением firefox как изменить формат даты в этой пользовательской форме html Как разрешить внедренные изображения при дезинфекции html с помощью OWASP Java HTML Sanitizer Есть ли способ иметь ширину набора полей только так же широко, как и элементы управления в них? Как я могу заставить свою панель поиска работать? Проблема с нижней колонтитулом – CSS CSS – Граница только внутри таблицы Как загрузить файлы CSS с помощью Javascript? Использование преобразования XSL для преобразования XML в HTML Получить значение динамического тега привязки и передать его на следующую страницу Правила CSS не применяются к динамически генерируемым элементам Прокручиваемая таблица HTML с фиксированным заголовком и фиксированным столбцом Позиционирование фонового изображения на элементе формы с помощью спрайтов CSS высота дочернего div 100% игнорируется в каких условиях мы можем использовать селектор css *?

Проверка номеров телефонов с помощью Javascript

Я работаю над веб-формой с несколькими полями и кнопкой отправки. Когда нажимается кнопка, я должен проверить, что необходимые текстовые поля заполнены и номер телефона в правильном формате. Я могу принимать только 7 или 10 цифр телефонных номеров, но такие символы, как (,), (-) и т. Д., Являются приемлемыми. Если это поле пуст или номер телефона не в правильном формате (не 7 или 10 номеров длинный, а не номер) или был оставлен пустым, я должен добавить красную рамку вокруг текстового поля. Эта граница должна оставаться на месте до тех пор, пока пользователь не исправит ошибку.

Я не могу заставить это работать правильно. Я пробовал несколько разных способов сделать это, но получил несколько разных типов ошибок. Один из способов, казалось, работал, но красная рамка отображалась только на секунду, а затем исчезла, и значение в текстовом поле было сброшено.

Вот мой код и ссылка на созданный jsfiddle:

Javascript:

 function validateForm() { return checkPhone(); } function checkPhone() { var phone = document.forms["myForm"]["phone"].value; var phoneNum = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/; if(phone.value.match(phoneNum)) { return true; } else { document.getElementById("phone").className = document.getElementById("phone").className + " error"; return false; } }  

HTML:

 
Phone Number:

JSFiddle:

http://jsfiddle.net/mkdsjc0p/

Что касается вашего регулярного выражения, я думаю, это должно быть

 ^\+{0,2}([\-\. ])?(\(?\d{0,3}\))?([\-\. ])?\(?\d{0,3}\)?([\-\. ])?\d{3}([\-\. ])?\d{4} 

Но в целом презумпция неверна, потому что можно ввести что-то вроде ++ 44 20 1234 56789 или +44 (0) 1234 567890, лучше сделать что-то вроде этого

 var phone = document.forms["myForm"]["phone"].value; var phoneNum = phone.replace(/[^\d]/g, ''); if(phoneNum.length > 6 && phoneNum.length < 11) { return true; } 

это гарантирует, что введенное значение имеет от 7 до 10 цифр, тем не менее, что такое форматирование. Но вы должны думать, что максимальная длина для числа может быть больше 10, как в примере выше.

 function telephoneCheck(str) { var a = /^(1\s|1|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/.test(str); alert(a); } telephoneCheck("(555) 555-5555"); 

Попробуй это, я работаю.

 
 < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">     Form    

Registration Form


Name:

 if (charCode > 47 && charCode < 58) { document.getElementById("error").innerHTML = "*Please Enter Your Name Only"; document.getElementById("fullname").focus(); document.getElementById("fullname").style.borderColor = 'red'; return false; } else { document.getElementById("error").innerHTML = ""; document.getElementById("fullname").style.borderColor = ''; return true; }