NikaP (21 Июнь 2013 - 10:42) писал:
А именно, доработать форму ввода телефонного номера при оформлении заказа на сайте самим клиентом. Разбить на окошки, где +7 будет стоять автоматически, плюс еще 2 кошка - для кода номера и второе для оставшейся части.
А ниже указать пример ввода +7 910 0001111
Тогда все номера будут вводится правильно и не надо будет потом вручную за всеми клиентами исправлять правильность ввода номера. А то на своем опыте скажу, что клиенты вводят как им забагорассудиться - и через дефис все цифры и слитно; и с восьмеркой и без; кто-то со скобками и т.п.
Иначе вся ваша затея с автоматической рассылкой - это пшик. Т.к. пока не поправишь номер - ничего не получишь.
if(typeof(jQuery.validator) != 'undefined') { jQuery.validator.addMethod("phone_number", function(value, element) { return (this.optional(element) || /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/i.test(value)) ? true : false; }, "Укажите корректный телефонный номер"); }
и далее в шаблоне "Оформление заказа" к полю
<input id="contactPhone" name="form[contact][phone]" class="required " value="{ORDER_FORM_CONTACT_PHONE}">Нужно будет дописать добавленный класс проверки телефона, чтобы получилось так:
<input id="contactPhone" name="form[contact][phone]" class="required phone_number" value="{ORDER_FORM_CONTACT_PHONE}">
Ещё более простой метод без использования регулярных выражений, просто дописать минимальную длину для поля: minlength="10", для ещё более жесткой проверки можно ещё добавить класс
digits, но я бы его не советовал, т.к. он исключает возможность указания скобочек, знаков тире, а также возможности указания буквенных телефонов. Код получается более простой, но тоже работает, хоть и с некоторой погрешностью:
<input id="contactPhone" name="form[contact][phone]" class="required" value="{ORDER_FORM_CONTACT_PHONE}" minlength="10">