у меня клиенты часто пишут номер с первой цифрой 8 и естественно номер обрезается в конце , и получается что-то типа +7(892)6111111 т.е. нет последней цифры = номер не правильный= лид упущен, можно ли как-то наколдовать что бы ,если введена первая цифра 8 , то она удалялась, или что бы номер где вторая цифра после +7 идет 8 ,считался неправильным и не давал завершить оформление
Как то не работает.
%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5|690x218
Кеш карта чистил
Кеш браузера чистил и отключал и в анонимном режиме загружался
кеш статических фалов ЗахидХоста тоже отключал
может путь не тот или еще что-то?
Хелп плиз.
каждись понял. не подключил…
Я решил это кардинальным способом, потому как номера обрезаются бывает и из-за кривого автозаполнения (на iOS, например, который заполняет номер с +7 и дублирует лишнюю 7).
В скрипте надо заменить строку с маской на mask: '+7(X99)999-99-99',
и в конце дописать условие:
definitions: {
'X': {
validator: "9"
}
}
Полный пример скрипта:
$(document).bind('ready ajaxComplete', function(){
$('input[type="tel"]').inputmask({
mask: '+7(X99)999-99-99',
placeholder: '_',
showMaskOnHover: false,
definitions: {
'X': {
validator: "9"
}
}
});
});
В РФ префиксы мобильных номеров начинаются всегда с 9
у всех операторов. После этой правки ввести первой цифрой ничего кроме 9
нельзя. Проблемы с автозаполнением тоже решились.
Больше с проблемой некорректных номеров в заказе мы с тех пор не сталкивались, хотя до этого такое было часто.
Получилось решить? Я именно таким способом подключаю маску – ссылку на js-файл в scripts.post.tpl
(как и многие другие скрипты).
дада. все норма. три раза перечитал, а про подключить не увидел ))) спасибо!
Новая проблема вылезла.
вводим, нажимаем поиск
получаем
еще раз поиск
т.е. уезжает вправо.
как-то можн это победить?
С таким не сталкивался, проверил сейчас. Но может это из-за того, что первая цифра префикса у меня только 9
, поэтому номер “съехать” не может.
Забавное поведение, конечно. Даже нет мыслей, почему такое может происходить.
upd: это из-за того, что js-скрипты применяются через какое-то время после загрузки страницы.
То есть нажав “Поиск” происходит обновление страницы и при её загрузке скрипт еще не применился к полю, но в поле есть номер без формата +380951234567
, и как только происходит подгрузка js-скрипта, накидывается маска и формирует цифры в поле под неё – отсюда и появляются лишние 38
, обрезая конец номера.
Можно загружать скрипты до загрузки содержимого страницы и после загрузки jquery, но это надо смотреть детально.
Вы правы, с валидатором все норм.
Подскажите еще пожалуйста как в my_changes затереть этот файл
/js/lib/inputmask-multi/phone-codes.json
т.к. в нем надо изменить для Украины иначе почему-то глючит иногда , не дает сохранять
“mask”: “+38(###)###-##-##”
а то сейчас сделаю и забуду, что его менял, а какая то обнова затрет
@AndreyJ , эта библиотека подключается в app/functions/fn.common.php
, в функции fn_get_phone_masks
. Эту функцию ядра нельзя переписать своими изменениями, к сожалению.
Сама библиотека на github обновлялась последний раз 4 года назад.
Правьте напрямую phone-codes.json
, вряд ли в нем будут изменения в ближайшее время.
А если в обновлении CS Cart и будет апдейт этого файла – вы не сможете продолжить обновление, пока не поставите галку согласия, что этот файл будет перезаписан, после чего будет сделана его копия, чтоб можно было применить правку в обновленном файле. В этом плане есть продуманность у CS Cart.
то что нужно ,спасибо )
вот это тоже сделайте.
и кеш чистите.
у меня теже симптомы были
вот обратите внимание на вашем же скрине
В коробке такого класса на поле нет:
Может модуль какой накидывает его, из-за чего и конфликтует.
upd: просмаркал, этот класс есть, если в настройках установлено “Номер в международном формате”. Надо проверить еще раз настройку, если изменить её – класс уходит.
он тут есть
/js/tygh/phone_mask.js
правда я не понимать, что он делает, но вы наверняка раберетесь
и настройку эту включал… а он все равно ошибку светил эту, пока в файле не поменял
мне почему то кажется из-за того, что уже были ранее созданы юзеры с номером в формате ином, где только две цифры в скобках 9(99) а не (999)
Да, перепроверил. Он как раз и накидывает форматы из библиотеки inputmask-multi, как я понял, поэтому кастомная маска будет конфликтовать.
Решается только изменением настройки “Допустимые номера телефонов” в Настройки - Внешний вид на “Любые цифры и ±()”.
Выше ссылку на демку кидал, там я добавил маску в scripts.post.tpl
и настройку изменил – оформление заказа с +38(ХХХ)
не выдает ошибку. Все косяки из-за класса js-mask-phone-inited
происходят.
это жесть - у меня ни при каких настройках эта хрень не исчезает из стиля. буду копать дальше
@vetalm, думаю, вам поможет решение выше. Найдите файл /js/lib/inputmask-multi/phone-codes.json
и в нем удалите строку:
{ "mask": "+380(##)###-##-##", "cc": "UA", "name_en": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" },
Либо замените её на:
{ "mask": "+38(###)###-##-##", "cc": "UA", "name_en": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" },
Второй вариант, на крайний случай – можно немного костыльнуть и принудительно удалять этот класс у поля. Надо добавить в скрипт маски строку:
$('.litecheckout__input.phone.cm-mask-phone').removeClass('js-mask-phone-inited');
Пример (с валидатором первой цифры префикса как 0
):
<script>
$(document).bind('ready ajaxComplete', function(){
$('.litecheckout__input.phone.cm-mask-phone').removeClass('js-mask-phone-inited');
$('input[type="tel"]').inputmask({
mask: '+38(X99)999-99-99',
placeholder: '_',
showMaskOnHover: true,
definitions: {
'X': {
validator: "0"
}
}
});
});
</script>
Проверил этот вариант, класс удаляется и ошибка формата номера не появляется.
эти не помогли ((( последний уже завтра поковыряю.
Спасибо за помощь!
Только этот вариант сработал, спасибо.
Что интересно - я изменил в файле /js/lib/inputmask-multi/phone-codes.json строку
{ “mask”: “+38(###)###-##-##”, “cc”: “UA”, “name_en”: “Ukraine”, “desc_en”: “”, “name_ru”: “Украина”, “desc_ru”: “” },
Ничего не произошло, а вот в один клик такое поведение без модуля маски http://joxi.ru/LmGoXkOhJYKoYm
Беда. При редактировании заказа клиента - не даёт ввести код +44 (Великобритания есть в списке стран). Где это регулируется вообще?