HTML5 почему не работает атрибут pattern в <input

Автор Юрий, 16 апреля 2021, 14:42:43

« назад - далее »

Юрий

Привет. Presta 1.6
Столкнулcя с такой проблемой. Внес HTML тег pattern  в <input>. Постоянно показывает об ошибке. Тег не работает.

Вот сам код: <input type="text" pattern="[А-Яа-яЁё]\s" class="is_required validate form-control" data-validate="isName" id="firstname" name="firstname" value="{if isset($smarty.post.firstname)}{$smarty.post.firstname}{/if}" />


pattern="[А-Яа-яЁё]\s" - допускается Кирилица и пробелы.
Внес тег так как боты отключают JS. Регистрируются на Латинице, типа. Спам. Решил через HTML закрутить гайки (Есть капча у меня на сайте, но без JS не работает)

У меня ошибка при регулярки pattern. Пробовал самые простые, всё равно ошибка. Прикрепил файл.

Неужели Presta 1.6 не поддерживает HTML5

Суть была такая чтоб установить регулярку на Имя и Фамилия только кириллические символы
Интернет магазин электрокаминов https://kaminflame.ru и много других проектов. Разработка, реклама, SEO. Все по остеопатию https://100letlife.com

mistral

Это не prestashop, smarty выдает ошибку.
В теги {literal} оберните ваш input.

Юрий

После того как обернёшь {literal} {/literal}, в input попадает функция. Вот такой скриншот.

Мой код обернул 2 imput Имя и Фамилия:
           {literal}<div class="required form-group">
            <label for="customer_firstname">{l s='First name'} <sup>*</sup></label>
            <input onkeyup="$('#firstname').val(this.value);" type="text" class="is_required validate form-control" data-validate="isName" id="customer_firstname" name="customer_firstname"  placeholder="Имя" pattern="[А-Яа-яЁё]" value="{if isset($smarty.post.customer_firstname)}{$smarty.post.customer_firstname}{/if}" />
         </div>
         <div class="required form-group">
            <label for="customer_lastname">{l s='Last name'} <sup>*</sup></label>
            <input onkeyup="$('#lastname').val(this.value);" type="text" class="is_required validate form-control" data-validate="isName" id="customer_lastname" name="customer_lastname"  placeholder="Фамилия" pattern="[А-Яа-яЁё]" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" />
         </div>{/literal}
Интернет магазин электрокаминов https://kaminflame.ru и много других проектов. Разработка, реклама, SEO. Все по остеопатию https://100letlife.com

mistral

У вас там переменные smarty в форме, поэтому нельзя всю форму заключать в literal.
Оборачиваете только те переменные, которые вы хотите исключить из обработки шаблонизатором.
Например так
{literal}pattern="[А-Яа-яЁё]"{/literal}

Юрий

Заработало.

Единственное поменял регулярку на ^[А-Яа-яЁё\s]+$ - любое слово на латинице

Почему-то у меня не все примеры Имя на кириллице прошли на этой переменной [А-Яа-яЁё]

Спасибо Большое
Интернет магазин электрокаминов https://kaminflame.ru и много других проектов. Разработка, реклама, SEO. Все по остеопатию https://100letlife.com

Юрий

К сожаление боты продолжают регистрироваться.
javascrit правило не помогло, HTML тег тоже не помог.
Модуль eicaptcha - reCAPTCHA не работает с отключенным js

Есть какие методы отмахаться от ботов регистраторов?
Интернет магазин электрокаминов https://kaminflame.ru и много других проектов. Разработка, реклама, SEO. Все по остеопатию https://100letlife.com

PrestaMan

Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!