И опять валидация формы...
Доброго времени суток, Уважаемые!
Прошу помощи. Есть html форма, к ней прикручен JS-валидатор. Проверка идёт по каждой строке отдельно (Имя, фамилия, ...). Всё бы ничего, но решил прикрутить к этой форме проверку номера телефона. Для чего добавил в скрипт вот это: //validate 3// function isValidPhone ( str ) { if (str == "") { alert("Укажите телефон в формате (ХХХ)ХХХ-ХХ-ХХ"); return false; } else if (str.indexOf (/^\(\d{3}\)\d{3}-\d{2}-\d{2}$/.test(str))) { alert("Телефон не соответствует формату"); return false; } return true; } Как итог - пустое поле скрипт видит и выводит ошибку, а формат номера не признаёт вообще никакой, хотя изначально он задумывался как "(123)456-78-90" ((( Заранее благодарен за помощь! |
Бестолковый,
проверять можно каждый символ -- если не тот прекращать проверку вернуть что было правильного |
рони,
хотелось бы понять что именно не так в приведенном коде. А то, что методом перебора владеть не смею уверен я :) |
Цитата:
indexOf и нафига оно у вас. |
а зачем вообще тут нужен str.indexOf???
без него не? else if (!/^\(\d{3}\)\d{3}-\d{2}-\d{2}$/.test(str)) { |
Бестолковый,
function isValidPhone ( str ) { if (str == "") { alert("Укажите телефон в формате (ХХХ)ХХХ-ХХ-ХХ"); return false; } else if (!/^\(\d{3}\)\d{3}-\d{2}-\d{2}$/.test(str)) { alert("Телефон не соответствует формату"); return false; } return true; } alert(isValidPhone ( "(123)456-78-90" )) |
Помнится была такая толковая традиция автоматически переносить фокус на следующее поле после заполнения предыдущего. Кто хоть раз ставил сам ПО и вводил серийники - тот о ней помнит. Но не Бестолковый. Всю заботу о правильном формате номера он возлагает на ибанента. Который понятия может не иметь какой у него номер в федеральном формате. Ну и пусть идет лесом, пральна же? Нафиг нам такие клиенты, ну тупыее.
|
Цитата:
Единственное объяснение - никто через эту форму сроду не заказывал и не будет подавно. Иначе бы такого программиста заказчик давно бы послал на пенсию. В общем ничего не стоит так дешево и не обходится так дорого, как тупизна. |
kostyanet,
раскажите пожалуйста вы сразу осознали себя программистом или у вас были игрушки? |
рони, только в условиях когда заказчику положить на предмет занятий нанятого программиста, программист может самовыражаться до посинения. Иначе его очень быстро построят или выведут из строя.
Чем занимается автор темы и что вы очевидно поддерживаете называется простым и понятным всякому словом бюрократизм. Типа у нас тоже все как у больших. Как будто мля оператору нипошарам, а если нипошарам то программисту как два пальца отформатировать 10 цифр как оператору по шарам. Но нет, форматировать должен клиент. А мы, ну мы же как большие - только проверять будем. Ростелефонформатнадзор мля. Большинство покупок совершается импульсивно. Мегамоллы на этом все стоят. Чем легче купить - тем больше покупают. Чем больше препятствий на пути к сделке - тем меньше сделок. Так что не надо про игрушки. Тут все наоборот. ЗЫ я тоже покупатель, в смысле пытался стать покупателем в рунете и как большинство обломился. В том числе из-за национального бюрократизма. Сами себе гадим в рот. |
http://demo.moguta.ru/ - тут кнопка заказа звонка. Для поля телефона используется плагин какой-то. На первый взгляд работает нормально.
kostyanet, поля под части номера - это хорошо. Но только если сделано достойно. Самому лучше делать только если есть лишнее время. Надо искать готовое. Помню на хабре кто-то презентовал подобный скрипт. |
Я могу передать номер как мне удобно: 123-456-7890 - не формат - пусть нюхают, пойду в другой магаз. Ну или пока чухался с воплями не тот формат - вообще перехотел покупать.
Но главное - зачем вообще что-то проверять и форматировать? 123-45-67 - значит местный, 1234567 - тоже самое. 6666-333 - кто-то заказал нумерологию и он неделю будет думать как это сгруппировать иначе. Ну и в таком роде. Не надо проверять форматы, принимайте как есть, не выносите людям мозг за их же деньги. И люди к вам потянутся. |
Кстати, у нас в городе-спутнике вообще пятизначные еще номера. Попробуй кого-нить поймать там и узнать каков его домашний в федеральном...
Кстати еще, зачем инетлавке мое ФИО? Я когда приду за товаром они ж фио не спросят. Ну впишу я в поля Иосиф Сталин - что изменится? Терминалы где группировка автоматическая пишут саркастически: проверьте правильность введенного номера - и по-своему хренакс. Проверяй. Деваться некуда, карты теперь не продают. |
:write:
Ввод номера телефона по шаблону ... <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <input oninput="proverka(this)" onfocus="setCursorPosition(1, this)"> <script> function setCursorPosition(pos, elem) { elem.focus(); if (elem.setSelectionRange) { elem.setSelectionRange(pos, pos); } else if (elem.createTextRange) { var range = elem.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } function proverka(el) { var matrix = "(123)456-78-90", i = 0, val = el.value.replace(/\D/g, ''); matrix = matrix.replace(/\d/g, function (a) { return val.charAt(i++) || "_" }) el.value = matrix; i = matrix.lastIndexOf(val.substr(-1)); i < matrix.length ? i++ : (i = 1) setCursorPosition(i, el) }; document.querySelector('input').oninput() </script> </body> </html> |
Цитата:
|
kostyanet,
Господин сказочник ваше словоблудие засоряет форум, ваше мнение и обрывки кода говорят что у вас Цитата:
|
Бууууу....
Вот это Вы Господа разошлись ))) Всем спасибо, всё великолепно работает. Вопрос почти что закрыт. Теперь осталось только модальное окно с благодарностью к странице прикрутить, но это уже другой вопрос... Для справки - тип указываемого номера согласован с заказчиком. Так что тут не моё "хочу" играет роль... Я вообще говорил клиенту о том, что достаточно ссыль типа mailto на странице сделать и харэ. Но, поскольку клиент немного примитивен и при слове "Mozilla" меняет памперс (сам знает только IE и данную пагубную традицию менять ни в какую не хочет), а прогами типа Outlook и иже с ними пользоваться не умеет и учиться не хочет, то задан был мне вопрос: Ну а как же вот такой как и я письмо через сайт мне напишет???:blink: |
Цитата:
|
Часовой пояс GMT +3, время: 03:25. |