FormIt + AjaxForm - валидация телефона
Приветствую.
Подскажите, разве formit (ну или обёртка ajaxform) не умеют проводить валидацию поля phone именно на содержимое, поле обязательное, но валидацию проходит, даже если любую букву вписать.
Подскажите, разве formit (ну или обёртка ajaxform) не умеют проводить валидацию поля phone именно на содержимое, поле обязательное, но валидацию проходит, даже если любую букву вписать.
Комментарии: 12
Стандартного валидатора на телефон нет, насколько я помню, но всегда же можно сделать любой кастомный валидатор https://docs.modx.com/extras/revo/formit/formit.validators
оу, не знал, правда для меня это тяжкая задача (программировать то не умею).
Вообще вопрос небольшой не по теме: вот использую эту связку, как можно заменить текст стандартных сообщений (которые выдаёт именно FormIt), не трогая словари? Я про «это поля обязательно...»
Вообще вопрос небольшой не по теме: вот использую эту связку, как можно заменить текст стандартных сообщений (которые выдаёт именно FormIt), не трогая словари? Я про «это поля обязательно...»
https://docs.modx.com/extras/revo/formit/formit.validators#FormIt.Validators-CustomErrorMessages
&vTextRequired
задает сообщение для любого поля, проверяемого на reqired&phone.vTextRequired
задает сообщение для поля phone, проверяемого на required
спасибо большое, только у меня почему-то текст ошибки для телефона показывается ещё и под капчей (recaptchaV2). для каптчи как-то можно задать текст, у неё же нет идентификаторов никаких?
смог привести всё к более менее желаемому виду так:
[[!AjaxForm?
&form=`tpl.AjaxForm.Feedback`
&snippet=`FormIt`
&hooks=`recaptchav2,email`
&emailSubject=`тема`
&emailTo=`почта`
&emailTpl=`tpl.Email`
&validate=`name:required:minLength=^2^,phone:required:isNumber,g-recaptcha-response:required`
&validationErrorMessage=`В форме содержатся ошибки!`
&successMessage=`Спасибо за обращение<br />Мы скоро свяжемся с вами`
&vTextRequired=`Необходимо поставить галочку`
&vTextIsNumber=`Номер состоит из цифр`
&phone.vTextRequired=`Укажите Ваш телефон`
&name.vTextRequired=`Укажите Ваше имя. `
&vTextMinLength=`Не менее 2 букв`
]]
А по поводу кастомного валидатора — для проверки номера вида +7 (XXX) XXX-XX-XX простейший валидатор будет выглядеть так:
<?php
$success = false;
if (!preg_match('/^\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}$/g') {
$validator->addError($key, 'Неверный формат номера телефона!');
} else {
$success = false;
}
return $success;
спасибо)
оказывается параметр isNumber может помочь для валидации поля с номером.
там есть ещё параметр regexp, кажется в него можно занести ваш фильтр "/^\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}$/g"
но не пробовал.
От спама как бы рекаптча стоит, а для людей уже jquery плагин, о котором писали ниже. Он на IE<10 не работает правда, но там уже пусть хоть в каком-нибудь формате уже телефон укажут, раз до сих пор на IE9 )))
там есть ещё параметр regexp, кажется в него можно занести ваш фильтр "/^\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}$/g"
но не пробовал.
От спама как бы рекаптча стоит, а для людей уже jquery плагин, о котором писали ниже. Он на IE<10 не работает правда, но там уже пусть хоть в каком-нибудь формате уже телефон укажут, раз до сих пор на IE9 )))
советую поставить такую вещь как maskedinput
За ввод отвечает скрипт maskedinput.js который в свою очередь дает ввести только номер телефона в международном формате с +7…
Буквы ввести ты не сможешь, ввести неправильный(короткий) номер так же не сможешь, соответственно это защищает неплохо от спама т.к роботы не могут ввести это поле, в AjaxForm пишешь phone:requiredи получешь т о что хотел.
Ссылок здесь писать не буду погугли эту тему, в нете много уроков)) Удачи
За ввод отвечает скрипт maskedinput.js который в свою очередь дает ввести только номер телефона в международном формате с +7…
Буквы ввести ты не сможешь, ввести неправильный(короткий) номер так же не сможешь, соответственно это защищает неплохо от спама т.к роботы не могут ввести это поле, в AjaxForm пишешь phone:requiredи получешь т о что хотел.
Ссылок здесь писать не буду погугли эту тему, в нете много уроков)) Удачи
Да, про этот плагин к jquery знаю, сам его юзал на другом проекте (другой cms), думал лучше проверку на стороне сервера, но в итоге эту штуку приделал.
Такой плагин не даст гарантии что номер телефона придет к вам в нужном формате, так как любую проверку на фронтенде можно запросто обойти — было бы желание.
Вопрос стоял вот так
но валидацию проходит, даже если любую букву вписать.
Помоему я дал ответ на данный вопрос) зачем усложнять жизнь?
Вопрос стоит в том для чего автору данная штука? Если против спама, тогда прикрутите в дополнение гугл капчу.
но валидацию проходит, даже если любую букву вписать.
Помоему я дал ответ на данный вопрос) зачем усложнять жизнь?
Вопрос стоит в том для чего автору данная штука? Если против спама, тогда прикрутите в дополнение гугл капчу.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.