Всем привет! Коллеги, вопрос вот в чем: На главной странице сайта в popup добавлена веб-форма, которая должна работать ajax`ом
если включить стандартный режим ( "AJAX_MODE" => "Y") форма прекрасно работает. Но мне нужна дополнительная проверка на наличие ошибок и если их нет, то выполнить дополнительные действия. Не пойму как реализовать такое поведение.Делаю так:
на главной странице вывожу компонент:
Код |
---|
<div class="main-form main-form_modal callback-form">
<?if($_REQUEST['callback_form'] == "Y") $APPLICATION->RestartBuffer();?>
<?$APPLICATION->IncludeComponent(
"bitrix:form.result.new",
"callback",
array(
// "AJAX_MODE" => "Y",
"CACHE_TIME" => "3600",
"CACHE_TYPE" => "A",
"CHAIN_ITEM_LINK" => "",
"CHAIN_ITEM_TEXT" => "",
"EDIT_URL" => "",
"IGNORE_CUSTOM_TEMPLATE" => "N",
"LIST_URL" => "",
"SEF_MODE" => "N",
"SUCCESS_URL" => "",
"USE_EXTENDED_ERRORS" => "Y",
"WEB_FORM_ID" => "2",
"COMPONENT_TEMPLATE" => "callback",
"VARIABLE_ALIASES" => array(
"WEB_FORM_ID" => "WEB_FORM_ID",
"RESULT_ID" => "RESULT_ID",
)
),
false
);?>
<?if($_REQUEST['callback_form'] == "Y") die;?>
</div>
|
В шаблоне формы добавляю onclick на submit
Код |
---|
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
?>
<? if ($arResult["isFormErrors"] == "Y"): ?>
<?= $arResult["FORM_ERRORS_TEXT"]; ?>
<? endif; ?>
<?= $arResult["FORM_HEADER"] ?>
<div class="text-field-wrap <? empty($arResult['form_text_4']) ?: "text-focused text-active" ?>">
<label for="form-name3"><?= $arResult["QUESTIONS"]["SIMPLE_QUESTION_419"]["CAPTION"]; ?><sup>*</sup></label>
<input type="text" class="text-field" id="form-name3" name="form_text_4"
value="<?= $_REQUEST['form_text_4'] ?>">
</div>
<div class="text-field-wrap <? empty($arResult['form_text_5']) ?: "text-focused text-active" ?>">
<label for="form-phone3"><?= $arResult["QUESTIONS"]["SIMPLE_QUESTION_424"]["CAPTION"]; ?>
<sup>*</sup></label>
<input type="text" class="text-field phone-mask" id="form-phone3" name="form_text_5"
value="<?= $_REQUEST['form_text_5'] ?>">
</div>
<div class="text-field-wrap <? empty($arResult['form_text_6']) ?: "text-focused text-active" ?>">
<label for="form-message3"><?= $arResult["QUESTIONS"]["SIMPLE_QUESTION_307"]["CAPTION"]; ?>
<sup>*</sup></label>
<textarea type="text" class="text-field text-field_last" id="form-message3"
name="form_text_6"><?= $_REQUEST['form_text_6'] ?></textarea>
</div>
<span class="form-note">
<?= GetMessage("FORM_APPLY_DATA"); ?>
</span>
<div class="submit-wrap">
<input class="submit btn-blue" type="submit" oncl ick="callbackForm(); return false;" name="web_form_submit">
</div>
<?= $arResult["FORM_FOOTER"] ?>
|
ну и собственно подключаю скрипт который будет обрабатывать отправку формы:
Код |
---|
function callbackForm(){ var o ={};
o['callback_form']='Y';
o['form_text_4'] = $("input[name='form_text_4']").val();
o['form_text_5'] = $("input[name='form_text_5']").val();
o['form_text_6'] = $("#form-message3").val();
jQuery(function ($) {
$.ajax
({
type: "Post",
url: "/",
data: o,
dataType: "html",
success: function(data)
{
console.log(data);
$(".callback-form").html(data);
}
});
});
}
но такой подход не работает.
|