Веб формы

Набор полезных практик для работы с веб формой

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 обновление веб-формы, используйте конструкцию

script.js
$(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" => "Редактирование включаемой области раздела",
	));
?>

Оформление поля телефон

Чтобы телефон можно было корректно вводить на телефонах, и без большого труда вешать на поле маску ввода, предлагается следующий метод.

  1. Отключить упрощенный режим редактирования веб форм

    Настройки > Настройки продукта > Настройки модулей > Веб-формы > Использовать упрощённый режим редактирования форм

  2. Заходим в веб форму, редактируем вопрос

  3. На вкладке ответ в поле параметры вставляем код: class=phone

  4. Далее нужно вывести это поле в шаблоне

Вывести поле телефона нужно с типом 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