Про то, что в cs-cart нет нормально реализованного ввода телефонного номера (или про такую реализацию неизвестно из-за недостатков документации) не писал только ленивый.
Увы, придется написать еще раз.
Почему при выборе единственной страны — России, при выборе российского города, cs-cart 4.11.4 SP 3 позволяет писать в поле телефонного номера нечто, что начинается на комбинации, недопустимые для России?
Лирическое отступление: мы долго ***лись с проблемой получения валидного телефонного номера от клиента. Люди вводят вместо семерки восьмерку, например. Но какое-то решение в версии 4.9.3 мы придумали.
Примерно такое:
Может быть оно неидеально. Но будучи прикрученным к одностраничному чекауту полностью решило наши проблемы. Теперь все номер выглядят так:
Нет проблем с отправкой SMS, нет проблем при дозвоне.
Сейчас пытаемся перейти на версию 4.11.4
И снова ***тория
Почему-то восьмерку не ввести — долой клиентов!
Зачем-то в шаблон номера вставлены скобки. Вы правда, думаете, что это красиво? Смотрите:
Слева на скрине — как должен выглядеть красивый телефонный номер. Но клиент — еще тот специалист. Поэтому восьмерку шаблон тоже должен принимать и преобразовывать в +7 (для России).
Подведем итог:
Прошу исправить косяк и оставить для России только один шаблон: +7 111 111-11-11
По возможности было бы здорово, если бы в документации было написано, как пользователь cs-cart сам может отформатировать шаблон по своему разумению (мало ли, кому-то очень нужны скобки, а кому-то нет?)
В валидаторе необходимо добавить преобразование восьмерки в +7 (для России).
По поводу +7: пришлось на сайте прописать образец заполнения
Скобки: смотрятся красиво, но при копировании полностью теряют смысл, еще приходится изощряться)))
Всегда должен быть выбор! хочешь поставить +7 - ставь, хочешь заполнение без скобок - пожалуйста. Я не программист, но неужели это так сложно сделать?
Вообще, в плане копирования удобнее всего номер без пробелов и чёрточек - щёлкнул 2 раза и ctrl+C.
Но для зрительного восприятия удобнее с разделителями.
Сейчас логика такова, что пользователю доступны для ввода коды стран, которые включены в меню Администрирование > Доставка и налоги > Страны. Привязки к выбранному покупателем городу нет. Однако я воспроизвел проблему, при которой в текущей версии можно ввести коды, отличные от +7, когда среди всех стран включена только Россия. Это баг. Передал информацию разработчикам.
Что касается преобразования 8 в +7 для России - запрос на добавление этой фичи я оставлю, но это скорее к кастомной разработке. В качестве единого шаблона вы можете воспользоваться стандартной возможностью модуля Обратный звонок и задать нужный шаблон. В тултипе к настройке есть краткое описание и примеры. Прикрепляю снимок экрана.
Во-первых, спасибо за ответ и надежду, что ошибка будет исправлена
Но есть во-вторых
Что касается кода страны (а +7 — это международный код России, не так ли?), то нет такого кода страны — 8.
Отсюда следуем логике:
вариант а, правильный, но клиентам, возможно, неудобный: восьмерку запрещаем вводить на первом месте. Только семерку разрешаем. Результат? Потеря значащей цифры в конце телефонного номера.
вариант б, возможно, менее правильный с точки зрения формальной логики, но устраняющий недовольство клиентов и ошибки в телефонном номере — замена для России введенной на первом месте восьмерки в +7.
И небольшое дополнение: я писал про формат телефонного номера. В любом месте, а не в форме обратного звонка. Просто форма для иллюстрации. Намного важнее верный ввод номера телефона при оформлении заказа. Я так думаю.
Соглашусь с автором.
Я вижу проблему в том, что очень много Российских покупателей все еще ассоциируют 8 с международным кодом, так как в СССР через «восьмёрку» звонили не только в другие города и республики, но и забугор в социалистические страны, и продолжали звонить вплоть до 1999 года. Эта цифра так глубоко засела в подкорке, что должно смениться не одно поколение, прежде чем все устаканится.
Считаю, что надо подстраиваться не под формальные цифры, а прежде всего под потребности ЛЮДЕЙ, в данном случае покупателей. Даже если покупателю будет удобнее и проще вместо +7 поставить просто «ТОЧКУ», то надо дать ему такую возможность.
У ПЭК-а в старой форме предварительного оформления заявки хорошо реализовано. Просто любой телефон копируешь в поле (неважно, скобки, плюсы, чёрточки, восемь, семь), и он преобразовывает в человеческий формат. Очень удобно.
В любом случае, должна быть защита от дурака. Ну вводят люди “8” и их много таких, так давайте пойдём навстречу и сделаем им хорошо. Общее впечатление о магазине формируется из мелочей. Это неосознанно, но работает. Здесь капля негатива, там немного и всё, человеку подсознательно уже не комфортно покупать здесь. Он не осознанно это для себя решает, а вот просто расхотелось или отложил на попозже (никогда).
Здравствуйте, @lexizli .
Проблема исправлена, исправление войдет в релиз CS-Cart и Multi-Vendor 4.11.6
Для исправления проблемы собственными силами можно использовать патч:
Исправление проблемы предполагает возможность задать маску телефона? Например как в модуле обратный звонок. У меня все клиенты из России и я хочу чтобы маска сразу выдавала в начале поля не просто + ,а +7. Многие клиенты после плюса пытаются писать 8 или сразу код трехзначный, а маска не дает и в итоге в лучшем случае звонят что не могут указать телефон при заказе. Проблема на ровном месте
Но этого бывает недостаточно. Видимо разработчики забыли добавлять data-атрибут к полю input при указанных вариантах настройки.
Поэтому нужно в шаблонах прописать у необходимых полей input этот атрибут data-enable-custom-mask="true"
Но это не решает проблему, дело в том, что часто пользователи в маску +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? Цена вопроса?
Только сегодня узнал о существовании такой проблемы с маской телефона.
Есть уже какое-то решение?
Главная проблема в том, то что если номер в международном формате, то цифры 8 просто невозможно ввести. Клиенты начинают набирать номер с 8, но в поле ничего не вбивается. Они бросают оформлять заказ, либо звонят.
Почему cs-cart в 2021 году году не в состоянии сделать нормальную маску телефона, которая уже есть чуть ли не на всех сайтах.
Подскажите, пож-ста, как поправить таки в 4.12.2 в Чекауте и в быстром заказе Юнитемы
Мне нужно +38 ХХХ ХХХ-ХХ-ХХ
Чтобы клиенты вводили только Х - цифры
А я хочу, чтобы номер телефона заполнялся в логике международного формата, но вместо +7 была только цифра 8, типа вот так: 8 (ХХХ) ХХХ-ХХ-ХХ
Причём, лучшим вариантом, было бы, если в поле ввода уже показывалась подсказка в том виде, в каком в итоге оно должно быть заполнено: 8 (123) 456-78-90
Почему бы не сделать настройки, чтобы каждый мог выбрать свой вариант заполнения поля с учётом кода своего региона или страны.