В сто первый раз про маску телефонного номера


#1

Про то, что в cs-cart нет нормально реализованного ввода телефонного номера (или про такую реализацию неизвестно из-за недостатков документации) не писал только ленивый.

Увы, придется написать еще раз.

  1. Почему при выборе единственной страны — России, при выборе российского города, cs-cart 4.11.4 SP 3 позволяет писать в поле телефонного номера нечто, что начинается на комбинации, недопустимые для России?

Это может быть как в теме от AB:

так и в коробочной теме:

Лирическое отступление: мы долго ***лись с проблемой получения валидного телефонного номера от клиента. Люди вводят вместо семерки восьмерку, например. Но какое-то решение в версии 4.9.3 мы придумали.

Примерно такое:

Screenshot_932

Может быть оно неидеально. Но будучи прикрученным к одностраничному чекауту полностью решило наши проблемы. Теперь все номер выглядят так:

Screenshot_933

Нет проблем с отправкой SMS, нет проблем при дозвоне.

Сейчас пытаемся перейти на версию 4.11.4

И снова ***тория :face_with_symbols_over_mouth:

Почему-то восьмерку не ввести — долой клиентов!
Зачем-то в шаблон номера вставлены скобки. Вы правда, думаете, что это красиво? Смотрите:

Читайте тут: http://steinebel.ru/?go=all/phone-numbers/

Слева на скрине — как должен выглядеть красивый телефонный номер. Но клиент — еще тот специалист. Поэтому восьмерку шаблон тоже должен принимать и преобразовывать в +7 (для России).

Подведем итог:

  1. Прошу исправить косяк и оставить для России только один шаблон: +7 111 111-11-11

  2. По возможности было бы здорово, если бы в документации было написано, как пользователь cs-cart сам может отформатировать шаблон по своему разумению (мало ли, кому-то очень нужны скобки, а кому-то нет?)

  3. В валидаторе необходимо добавить преобразование восьмерки в +7 (для России).

Это когда-нибудь случится?


#2

Надеемся и ждём.


#3

По поводу +7: пришлось на сайте прописать образец заполнения
Скобки: смотрятся красиво, но при копировании полностью теряют смысл, еще приходится изощряться)))
Всегда должен быть выбор! хочешь поставить +7 - ставь, хочешь заполнение без скобок - пожалуйста. Я не программист, но неужели это так сложно сделать?

С обнимашками. Я)))


#4

Вообще, в плане копирования удобнее всего номер без пробелов и чёрточек - щёлкнул 2 раза и ctrl+C.
Но для зрительного восприятия удобнее с разделителями.


#5

Здравствуйте.

Сейчас логика такова, что пользователю доступны для ввода коды стран, которые включены в меню Администрирование > Доставка и налоги > Страны. Привязки к выбранному покупателем городу нет. Однако я воспроизвел проблему, при которой в текущей версии можно ввести коды, отличные от +7, когда среди всех стран включена только Россия. Это баг. Передал информацию разработчикам.

Что касается преобразования 8 в +7 для России - запрос на добавление этой фичи я оставлю, но это скорее к кастомной разработке. В качестве единого шаблона вы можете воспользоваться стандартной возможностью модуля Обратный звонок и задать нужный шаблон. В тултипе к настройке есть краткое описание и примеры. Прикрепляю снимок экрана.

Спасибо.


#6

Во-первых, спасибо за ответ и надежду, что ошибка будет исправлена :slight_smile:

Но есть во-вторых :wink:

Что касается кода страны (а +7 — это международный код России, не так ли?), то нет такого кода страны — 8.

Отсюда следуем логике:

вариант а, правильный, но клиентам, возможно, неудобный: восьмерку запрещаем вводить на первом месте. Только семерку разрешаем. Результат? Потеря значащей цифры в конце телефонного номера.

вариант б, возможно, менее правильный с точки зрения формальной логики, но устраняющий недовольство клиентов и ошибки в телефонном номере — замена для России введенной на первом месте восьмерки в +7.

И небольшое дополнение: я писал про формат телефонного номера. В любом месте, а не в форме обратного звонка. Просто форма для иллюстрации. Намного важнее верный ввод номера телефона при оформлении заказа. Я так думаю.


#7

Соглашусь с автором.
Я вижу проблему в том, что очень много Российских покупателей все еще ассоциируют 8 с международным кодом, так как в СССР через «восьмёрку» звонили не только в другие города и республики, но и забугор в социалистические страны, и продолжали звонить вплоть до 1999 года. Эта цифра так глубоко засела в подкорке, что должно смениться не одно поколение, прежде чем все устаканится.

Считаю, что надо подстраиваться не под формальные цифры, а прежде всего под потребности ЛЮДЕЙ, в данном случае покупателей. Даже если покупателю будет удобнее и проще вместо +7 поставить просто «ТОЧКУ», то надо дать ему такую возможность.


#8

У ПЭК-а в старой форме предварительного оформления заявки хорошо реализовано. Просто любой телефон копируешь в поле (неважно, скобки, плюсы, чёрточки, восемь, семь), и он преобразовывает в человеческий формат. Очень удобно.

В любом случае, должна быть защита от дурака. Ну вводят люди “8” и их много таких, так давайте пойдём навстречу и сделаем им хорошо. Общее впечатление о магазине формируется из мелочей. Это неосознанно, но работает. Здесь капля негатива, там немного и всё, человеку подсознательно уже не комфортно покупать здесь. Он не осознанно это для себя решает, а вот просто расхотелось или отложил на попозже (никогда).


#9

Здравствуйте, @lexizli .
Проблема исправлена, исправление войдет в релиз CS-Cart и Multi-Vendor 4.11.6
Для исправления проблемы собственными силами можно использовать патч:


О том, как применить патч, можно прочитать в нашей документации: https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html


#10

Исправление проблемы предполагает возможность задать маску телефона? Например как в модуле обратный звонок. У меня все клиенты из России и я хочу чтобы маска сразу выдавала в начале поля не просто + ,а +7. Многие клиенты после плюса пытаются писать 8 или сразу код трехзначный, а маска не дает и в итоге в лучшем случае звонят что не могут указать телефон при заказе. Проблема на ровном месте


#11

В настройках нужно выбрать

А в модуле Обратный звонок указать формат

Но этого бывает недостаточно. Видимо разработчики забыли добавлять data-атрибут к полю input при указанных вариантах настройки.
Поэтому нужно в шаблонах прописать у необходимых полей input этот атрибут data-enable-custom-mask="true"


#12

Но это не решает проблему, дело в том, что часто пользователи в маску +7 (__) -- начинают вводить сначала 8 или 7 далее код 999 и номер 123-45-67, и получается +7 (899) 912-34-56 и одной цифры в конце не хватает.
Надо модифицировать js так, чтобы после заполнения маски, если пользователь вводит еще одну цифру, а первая введенная цифра 7 или 8, сдвигать все влево на 1 цифру, а 7 или 8 в начале удалять?

В одном интернет-магазине видел, что так работает маска.
Подсмотрел код - нашел такое
function(e, t, n) {
“use strict”;
Object.defineProperty(t, “__esModule”, {
value: !0
});
t.shiftPhoneCountryCode = function(e, t) {
var n = /^(8|7)/.test(t);
return 10 <= e.length && t && 10 !== t.length && n ? “” + e.slice(1) : e
}

Есть кто разбирается в js? Сможет прикрутить такое к CS-Cart? Цена вопроса?

Вот видео как это работает

Видео


#13

Да тоже давно хочу поменять маску сделать ее более управляемой (.


#14

Собственно вопрос к разработчикам тоже, может ли такой функционал войти в коробку?
@cs-cart_team