Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   И опять валидация формы... (https://javascript.ru/forum/events/45601-i-opyat-validaciya-formy.html)

Бестолковый 07.03.2014 15:23

И опять валидация формы...
 
Доброго времени суток, Уважаемые!

Прошу помощи.

Есть 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" (((

Заранее благодарен за помощь!

рони 07.03.2014 15:35

Бестолковый,
проверять можно каждый символ -- если не тот прекращать проверку вернуть что было правильного

Бестолковый 07.03.2014 16:30

рони,
хотелось бы понять что именно не так в приведенном коде.
А то, что методом перебора владеть не смею уверен я :)

рони 07.03.2014 16:37

Цитата:

Сообщение от Бестолковый
хотелось бы понять что именно не так в приведенном коде.

подумайте что возвращает
indexOf и нафига оно у вас.

devote 07.03.2014 16:41

а зачем вообще тут нужен str.indexOf???
без него не?
else if (!/^\(\d{3}\)\d{3}-\d{2}-\d{2}$/.test(str)) {

рони 07.03.2014 16:41

Бестолковый,
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 07.03.2014 18:19

Помнится была такая толковая традиция автоматически переносить фокус на следующее поле после заполнения предыдущего. Кто хоть раз ставил сам ПО и вводил серийники - тот о ней помнит. Но не Бестолковый. Всю заботу о правильном формате номера он возлагает на ибанента. Который понятия может не иметь какой у него номер в федеральном формате. Ну и пусть идет лесом, пральна же? Нафиг нам такие клиенты, ну тупыее.

kostyanet 07.03.2014 18:34

Цитата:

Укажите телефон в формате (ХХХ)ХХХ-ХХ-ХХ
Просто потрясающее ЧСВ.

Единственное объяснение - никто через эту форму сроду не заказывал и не будет подавно.

Иначе бы такого программиста заказчик давно бы послал на пенсию.

В общем ничего не стоит так дешево и не обходится так дорого, как тупизна.

рони 07.03.2014 18:48

kostyanet,
раскажите пожалуйста вы сразу осознали себя программистом или у вас были игрушки?

kostyanet 07.03.2014 18:57

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

Чем занимается автор темы и что вы очевидно поддерживаете называется простым и понятным всякому словом бюрократизм. Типа у нас тоже все как у больших.

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

Большинство покупок совершается импульсивно. Мегамоллы на этом все стоят. Чем легче купить - тем больше покупают. Чем больше препятствий на пути к сделке - тем меньше сделок.

Так что не надо про игрушки. Тут все наоборот.

ЗЫ я тоже покупатель, в смысле пытался стать покупателем в рунете и как большинство обломился. В том числе из-за национального бюрократизма. Сами себе гадим в рот.


Часовой пояс GMT +3, время: 08:36.