Веб формы
Набор полезных практик для работы с веб формой
AJAX для веб формы
Чтобы в компоненте form.result.new
включить режим AJAX добавьте в параметры компонента параметры:
"AJAX_MODE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "Y",
"AJAX_OPTION_SHADOW" => "N",
"AJAX_OPTION_STYLE" => "Y",
Если необходимо разместить несколько форм на одной странице, нужно добавить каждой форме идентификатор:
"AJAX_OPTION_ADDITIONAL" => $arForm['ID'],
Оформление скриптов
Чтобы ваши скрипты адекватно отрабатывали после AJAX обновление веб-формы, используйте конструкцию
$(function () {
InitScripts();
});
BX.addCustomEvent('onAjaxSuccess', function(){
InitScripts();
});
function InitScripts() {
// your code
// например, маска для телефона
$('input[type="tel"]').mask("+7 (999) 999-9999");
}
Вывод результатов веб-формы
<?
$request = \Bitrix\Main\Context::getCurrent()->getRequest();
$resultForm = $request->get("RESULT_ID");
?>
<?if ($arResult["isFormNote"] == "Y") {?>
<div class="result-ok alert alert-success">
<?foreach ($arParams["RESULT"] as $arParam) {?>
<?= str_replace("#num#", $resultForm, $arParam);?><br />
<?}?>
</div>
<?}?>
Политика конфиденциальнсоти
<?$APPLICATION->IncludeFile("/include/agreement.php",
Array(
"BUTTON_TEXT" => $arResult['arForm']['BUTTON'],
"HREF" => $arParams['HREF']
),
Array(
"MODE" => "html",
"NAME" => "Редактирование включаемой области раздела",
));
?>
Оформление поля телефон
Чтобы телефон можно было корректно вводить на телефонах, и без большого труда вешать на поле маску ввода, предлагается следующий метод.
Отключить упрощенный режим редактирования веб форм
Настройки > Настройки продукта > Настройки модулей > Веб-формы > Использовать упрощённый режим редактирования форм
Заходим в веб форму, редактируем вопрос
На вкладке ответ в поле параметры вставляем код:
class=phone
Далее нужно вывести это поле в шаблоне
Вывести поле телефона нужно с типом tel
. Делается это для удобного ввода с мобильного устройства. Пример вывода:
<?foreach ($arResult["QUESTIONS"] as $arItem) {?>
// шаблон до вывода поля
<?if (!empty($arItem["CAPTION"])) {?>
<label><?= $arItem["CAPTION"]?> <?= ($arItem["REQUIRED"] === "Y") ? '<sup class="required">*</sup>' : ''?></label>
<?}?>
<? foreach ($arItem["STRUCTURE"] as $arInput) {
$type = $arInput["FIELD_TYPE"];
$name = "form_" . $type . "_" . $arInput["ID"];
$required = ($arItem["REQUIRED"] === "Y") ? 'required="required"' : '';
switch ($type) {
case "tel":
$name = "form_text_" . $arInput["ID"];
?>
<input <?= $required?> type="<?= $type ?>" name="<?= $name ?>" placeholder="+7 (___) ___-__-__">
<?
break;
// кейсы для text, email, file, radio, checkbox, select
// для примера кейсы для text и email
case "text":
case "email":
?>
<input <?= $required?> type="<?= $type?>" name="<?= $name?>" value="<?= $value?>">
<?
break;
}
}?>
<?}?>
Вывод подсказки под полем
Скоро...
Установка Google recaptcha 2
скоро...
Веб-формы AJAX в fancybox
скоро...
Last updated
Was this helpful?