Забыли ввести поле, некорректный e-mail — все это проверяется уже после отправки. А хотите на лету? Тогда мой новый модуль вам в помощь!
Более того, модуль дает вам возможность писать свои валидаторы на совершенно любое поле. Например, номер телефона — этого нет в Битрикс штатно ни в какой форме. А у меня есть
Давайте пробежимся по картинкам, чтобы было проще и понятнее. Либо можете сразу перейти к демо — перейдите к оформлениею заказа и поиграйтесь с полями. Особо попробуйте повводить номер телефона.
Понравилось? Давайте покупать и ставить
Сразу хочу сказать, что модуль только для одношаговой формы заказа. Рекомендую до покупки поставить демо и просто попробовать.
На самом деле я приложил максимум усилий, чтобы настраивать не пришлось вообще ничего. Просто включаете модуль, и он уже готов к работе. То есть не требуется даже кастомизация шаблона. Но конечно есть разные дизайны, разные формы, и иногда нужно что-то подкрутить. Давайте это рассмотрим.
Итак, вы поставили, какие есть варианты, кроме того, что все идеально заработало? Вариант первый, иконки чуть-чуть перекосились, сдвинулись правее/левее/выше/ниже. Это правится легко. Воспользуемся браузером, который позволяет налету править стили элемента. Например, Хром.
И там правим стили, видя как иконка сразу встает на нужное место:
Когда нас все устроило, копируем новые значения стилей, идем в настройки модуля (скрин выше был), и вставляем в поле «Общий CSS иконок». Таким же образом вы можете поправить и другие стили иконки. Например, саму картинку.
Но что если телодвижения такие не помогают, и нет-нет, да перекашивает. Тогда, к сожалению, надо внедрять вручную:(Кастомизируете шаблон оформления заказа (этот момент я упущу), и в файле шаблона props.php в самом верху пишите такую функцию.
function __showIcon($pid) {
static $included = null;
if ($included === null) {
$included = CModule::IncludeModule('asd.ordercheckfields');
}
if ($included) {
return CASDOrderCF::setIcon($pid);
} else {
return '';
}
}
А в нужном месте уже вставляете вызов функции, передавая ей ID (именно ID!) свойства.
echo __showIcon($arProperties['ID']);
Я не смогу всем конечно помочь, но если у вас есть коротенечкий вопрос, и не получается совсем чуть-чуть — напишите мне, что-нибудь придумаем.
Перейдем к написанию собственного валидатора
На первых скринах вы видели, как модуль ловко проверяет номер телефона. Как его научить? А легко и просто — достаточно написать свой обработчик события вот такого формата:
AddEventHandler('asd.ordercheckfields', 'OnOrderPropCheck', 'ASD_OnOrderPropCheck');
function ASD_OnOrderPropCheck($arProp, $val) {
if ($arProp['CODE'] == 'PHONE') {
//http://habrahabr.ru/post/110731/
if (strlen($val) && !preg_match('#^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$#is', $val)) {
return 'Телефон некорректен.';
}
}
}