валидация номера телефона
Друзья, вконтактной форме есть несклько полей ввода в однужно одном из них нужно добавить проверку ввода номера телефона.
Использую маску и плагин валидации jquery Функция валидации $.validator.addMethod('phonemask', function (value, element) { return this.optional(element) || /\([0-9]{3}\)\s[0-9]{3}-[0-9]{2}-[0-9]{2}/.test(value); }); C проверкой других полей на наличие в них текста все понятно $(AllInputs).each(function() { if($.trim(this.value) == '') { InputFiled = $(this).parent().find('.label-required').html(); mistake += '- ' + InputFiled + '\n'; } }); if(mistake.length > 0) { alert('Fill the fields please:\n' + mistake); return false; А вот как вшить сюда проверку input с классом .phone по указанной максе уже голову сломал Подскажите, чем можете ) |
Цитата:
if ($(this).hasClass('phone ')) {/*...*/}; |
ksa, спасибо.
немного не так написал инетерсует как раз момент интеграции в проверку-выдачу сообщения об ошибке ,в том же сообщении , что и при не заполнении других полей. С чем сравнивать? Нужно создать еще одну переменную например mistake1 или как-то можно записхать в ту же mistake? if(mistake.length > 0) { alert('Fill the fields please:\n' + mistake); return false; |
Цитата:
а можно и в общий... (с) В.Высоцкий mistake можно сделать объектом или массивом из двух пустых массивов... В те массивы потом добавлять сообщения... По окончании проверки, проверять какого типа есть сообщения и задавать им соответствующий заголовок. Потом собственно добавлять те сообщения. |
А могу ли я просто сравнивать значение input (.phone).val() == '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{2}-[0-9]{2}' ? обойтись без функции из первого сообщения.
Будет ли так работать? |
Capitalist, ты понимаешь что пишешь? :)
Цитата:
Сравнивать строку с номером телефона со строкой, в которой написано регулярное выражение не имеет смысла... :no: |
Capitalist,
во-первых /\(\d{3}\)\s\d{3}-\d{2}-\d{2}/ во-вторых шаблон можно прописать в атрибут pattern и браузер поддерживающий его при вводе в поле будет произведет нативную проверку в третьих, поле может иметь атрибут required, и сценарий может производить проверку заполнения таких полей, если браузер не поддерживает нативной и если поле имеет pattern, то по нему и проверять в четвертых, достаточно проверки булева значения - if(!$.trim(this.value)) ... |
мысли вслух: есть $.validator ... зачем ещё какие-то проверки?
|
laimas, о спасибо большое.
во-первых и во-вторых сделал, работает "если браузер не поддерживает нативной" это прямо условие можно такое задать? if(!$.trim(this.value)) - как я понимаю если после удаления пробелов в начале и конце строки, строка не пустая = true то ищем input с pattern? как проверить что строка с регулярным выражением в pattern совпадает? понимаю что в случае несоответствия выражения с pattern получаем mistake1 меня бы больше устроил как раз предложенный вариант так как заодно в поле эмейл тоже сделал pattern, все прекрасно рони, спасибо. да, функция уже есть, я просто не понимаю как можно в своей валидации оформить проверку что вернула функция. точнее на том уровне котором сейчас понимаю оказывается все неверным |
Цитата:
if(!"required" in document.createElement("input")) { //нет поддержки, проверка скриптом } Но, например, Apple давно забросил поддержку своего Safari под Windows и хотя этот браузер отвечает, что поддерживается "required", в тоже время с чистой совестью отправит форму и пустым таким полем. То есть кроме этого нужно еще и браузер, и ОС проверить. Цитата:
А если нет, обязательное поле заполнено, то проверка согласно условию заполнения. В случае если условие описывается шаблоном рег. выражения (это можно узнать как this.pattern), то конструктором RegExp создаем объект регулярного выражения и проверяем: var re = new RegExp(f[i].pattern); if(!re.this.value)) { //значение не соответствует рег. выражению } Вот только почему ваш телефон начинается с (XXX), видимо плагин подставляет первую цифру. Если же проверять по pattern, то в нем должен быть описан полный формат номера. |
Часовой пояс GMT +3, время: 21:40. |