Формат телефонного номера

Камрады, а кто как решает проблему задвоения контактов если один раз человек оформить заказ как +79990001122 а другой раз как 89990001122? В контакте пытаюсь изменить номер на другой (руками) пишет такой номер уже есть и не дает. В итоге человек говорит я заказывал уже 3 раза а мы этого не видим...
PS маску ввода номера не предлагайте, текущие реализации плагинов пробовал - все они подставляют +7 но ничто не мешает клиенту ввести номер начиная с 8 (и без последней цифры). Каждый 3й так и делает....В идеале - нужно на лету понимать что пользователь вводит с 8 и тутже удалять эту восьмерку, давая возможность ввести последнюю цифру номера. Правда бывают единицы которые вводит городской да еще и в урюпинске (8312701122... но их мало, можно на них не ориентироваться)  

3 ответа

  • 2

    предлагаю маску =)

    только не простую, а хитрую.

    Внешний вид маски: +7 (###) ###-##-##. 

    Во время ввода информации если пользователь вводит первые 2 цифры "89", то скриптами 8 сразу же убирается прямо во время ввода. Внедрял на одном проекте около 2-х лет назад "потестировать", жалоб от клиента не было. Косячных номеров стало приходить заметно меньше.

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

    Готового решения не знаю, нужно индивидуально дорабатывать. 

  • 1

    Всем кто хочет внедрить единый формат номера телефона при оформлении заказа рекомендую посмотреть плагин "Нормальная маска телефона".

  • 2
    replicant 24 декабря 2020 14:42 #

    Мой текст будет не о конкретном плагине, а просто о тех наблюдениях, которые удалось сделать в течение продолжительного времени на большом числе заказов. В свое время какое-то количество шишек набил себе, внедряя маску и решая эту проблему, а проблемы-то и не было. Расскажу о своем пользовательском опыте на примере формата мобильных номеров для России в виде +7 (xxx) xxx-xx-xx.

    Основа любой даже супер-умной маски ввода номера в том, что она пытается навязать посетителю ввод по задуманному шаблону. Именно это и приводит к ошибкам. Разработчики думают (когда-то давно лет 9-10 тому назад я тоже так думал), что они облегчают задачу, вводя заранее +7 или 8, но это совершенно не так. Нельзя мешать вводить покупателю номер так, как привычно. Коррекцию надо делать в фоновом режиме, тормозить форму, показывать ошибку нехватки последней цифры и отправлять на ввод заново. Со второй попытки абсолютно все справляются с ошибкой ввода, прочитывая введенное или просто вводя заново, уже вдумчиво глядя на маску, а не просто бомбя по кнопкам.

    Даже простая подсказка рядом с полем телефона с текстом вида "введите все 11 цифр номера, включая первую 7 или 8" убережет вас от многих бед.

    Знаете сколько ошибочных вводов номеров в части +7 или 8 или нехватки последней цифры на 85+ тыс заказов? Ноль! Маска не застрахует от ошибочного ввода номера, когда пользователь просто где-то в самом номере какие-то одну или две цифры перепутал и ввел другие, но это к делу не относится.

    Использую маску на всех полях на сайте, в корзине, при регистрации, в купить в 1 клик, в форме обратной связи, в бекенде и вообще везде, где есть ввод номера. Да, пришлось накинуть удавку кода скрипта на все поля, но это не сложно, они как правило легко вычисляются и в 90% случаев не уникальны у разных проектов, а добавить селектор в настройки дело пары секунд. Настройку селекторов вынес в отдельную часть и просто перечисляю их через запятую примерно так.

    input[name^="phone"], input[name^="data[phone]"],input[name^="profile[phone]"], input[name^="customer[phone]"], input[name^="fields[phone]"]

    Маска по цифрам _ (___) ___-__-__ работает крайне просто. Она не дает ввести что-то, кроме цифр и при недоборе последней цифры рапортует об ошибке. Человек смотрит в поле, видит, что ввел недостаточно, начав ввод без 7 или 8, а с кода и заново вдумчиво вводит всё, а с 7 или 8 - это для меня не важно.

    Начальные 7 и 8 приводятся к единому нужному формату не на виду у пользователя, а потом, когда форма отсылается, что обеспечивает идеальную качественную склейку по номеру, в котором проверяю только последние 10 с конца и не лезу в зону первой цифры. В сочетании с плагином https://www.webasyst.ru/store/... информация о заказах с похожих номеров всегда на виду оператора.

    Пользователю не надо помогать. Он как-нибудь справится. Ему просто не надо мешать! Тогда всё будет хорошо.

    • 0

      Покажите хотя бы 1 крупный магазин федерального масштаба, который использует маску телефона "x (xxx) xxx-xx-xx", а не "+7 (xxx) xxx-xx-xx"? Проверил с десяток, которые пришли в голову. Везде есть маска и она начинается именно с +7. Это стандарт. На Ozon и DNS, кстати, у масок телефонов действует схожий функционал с плагином "Нормальная маска телефона". Коррекция происходит в именно фоновом режиме: при вводе "+7 (89_)" восьмерка удаляется до того как номер телефона будет введен до конца.

      Автоматическая подстановка "+7" в начало предназначена не для того чтобы упростить пользователю жизнь, заполнив за него целую одну цифру, а для того чтобы в базе данных хранить все номера телефонов в едином формате. Это важно для корректной работы функционала движка/плагинов/сервисов/итп. То что плагин https://www.webasyst.ru/store/... научился определять что номера "+70000000000" и "80000000000" - не означает, что все другие плагины умеют это делать.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите