Доработать маску (плейсхолдер) телефона в ядре Карта

У кастомного скрипта из scripts.post.tpl, alex_vp выше правильно подсказал

спасибо, только не помогло. Везде работает в один клик, обратный звонок, оформление заказа при регистрации аккаунта не хотит

После внесения правки попробуйте в другом браузере проверить поле, бывает что js-кэш не сразу сбрасывается

Может тут более подходящий вариант правки полей самого шаблона ?views/profiles/components/profile_fields

<label
for="{$id_prefix}elm_{$field.field_id}"
class=“ty-control-group__title cm-profile-field {if $field.autocomplete_type == “phone-full” || $field.field_type == “ProfileFieldTypes::PHONE”|enum}cm-mask-phone-label{/if} {if $field.required == “Y”}cm-required{/if}{if $field.field_type == “Z”} cm-zipcode{/if}{if $field.field_type == “E”} cm-email{/if} {if $field.field_type == “Z”}{if $section == “S”}cm-location-shipping{else}cm-location-billing{/if}{/if}”
>{$field.description}

Попробуйте еще так:

$('input[type="tel"], input[x-autocompletetype="phone-full"]').inputmask({

Либо в указаном шаблоне найдите код:

    <input
        {if $field.autocomplete_type}x-autocompletetype="{$field.autocomplete_type}"{/if}
        type="text"
        id="{$id_prefix}elm_{$field.field_id}"
        name="{$data_name}[{$data_id}]"
        size="32"
        value="{$value}"
        class="ty-input-text{if ($field.autocomplete_type == "phone-full") || ($field.field_type == "ProfileFieldTypes::PHONE"|enum)} cm-mask-phone{/if} {if !$skip_field}{$_class}{else}cm-skip-avail-switch{/if} {if $smarty.foreach.profile_fields.index == 0} cm-focus{/if}" {if !$skip_field}{$disabled_param nofilter}{/if}
    />

и замените на:

<input
    {if $field.autocomplete_type}x-autocompletetype="{$field.autocomplete_type}"{/if}
    type={if ($field.autocomplete_type == "phone-full")}"tel"{else}"text"{/if}
    id="{$id_prefix}elm_{$field.field_id}"
    name="{$data_name}[{$data_id}]"
    size="32"
    value="{$value}"
    class="ty-input-text{if ($field.autocomplete_type == "phone-full") || ($field.field_type == "ProfileFieldTypes::PHONE"|enum)} cm-mask-phone{/if} {if !$skip_field}{$_class}{else}cm-skip-avail-switch{/if} {if $smarty.foreach.profile_fields.index == 0} cm-focus{/if}" {if !$skip_field}{$disabled_param nofilter}{/if}
/>

Тогда у поля будет тип “tel” вместо “text” и скрипт маски сработает.

Первый вариант предпочтительней, чтоб не править шаблон напрямую.

1 лайк

@imac, @ikoshkin
а давайте таки доделаем эту работу
62 человека проголосовало, для форума это много
доделайте плиз плейсхолдеры.

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

%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5

11 лайков

@imac, @ikoshkin, загляните сюда
обратите внимание, что даже разработчики поддерживают доработку данного функционала
%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5

12 лайков

@imac, @ikoshkin, @cs-cart_team

4 лайка

@cs-cart_team подскажите, когда будет реализован данный функционал? Давайте может вам заплатим за реализацию? - 2 года вас просят реализовать полезный для конечных пользователей функционал, а вы никак на это не реагируете.

1 лайк

Есть модуль от RF via @a.shishkin

Там не все нужное, маски например нет в админке.
Да и сама маска это только начальные цифры.

Есть все нужное для RU номеров, есть автоисправление. Маска в админке не уверен, что нужна.

Привет из Украины))
Да ваш модуль хорош, сам пользую, но

+38(0__)___-__-__
Нужна такая маска со скобочками и черточками. И удобно когда номера и на фронте и в админке выглядят одинаково.

6 лайков

Даже 0 вконце лучше не ставить, т.к. клиенты привыкли писать эту первую цифру номера, например 063…

1 лайк

Добрый день. Модуль по маске готов. Если интересно напишите пожалуйста в личку, скинем на тестирование.

Из личного опыта - маска в таком виде +38(0__)--_ себя не оправдала по двум причинам:

  1. При добавлении в маску скобок и нижнее подчеркивание на некоторых мобильных устройствах затруднялся ввод номера.
  2. При использовании маски “+380” часто покупатели вводят например 0671234567 в итоге получается +380067123456 последняя цифра 7 обрезается.

Пока используем такой формат “+38”, очень редко приходят заказы без “0” в таком виде +38671234567, но 0 добавить менеджеру куда проще чем угадывать последнюю обрезанную цифру.

Ваш модуль решает эту проблему?

Во первых - наша маска меняется в настройках под любой формат. На мобильных она также будет корректно работать.

Второе - модуль убирает автоподстановку, модуль запрещает копирование номера простой вставкой.

Уже эти 2 пункта положительно влияют на качество номеров.

Также в модуле реализована динамическая смена маски в зависимости от региона.

Это хорошо, но иногда покупатели на автомате набирают 0671234567 не обращая внимания, что 0 уже есть в маске. Можно ли добавить исключение двух 00 в маске?

У нас есть возможность добавлять правила автоматической обработки номеров для стран. Для +7 это уже работает.

Давайте выкатим, посмотрим первый фидбек и если проблема будет - добавим.

1 лайк

Добрый день! Возможно кого-то заинтересует новое альтернативное решение, больше никаких многострадальных масок!

1 лайк