Иногда требуется внести данные в поля веб формы из других источников, из сессии, из глобальных переменных, из параметров переданных на страницу, из произвольного кода. И все это можно сделать не кастомизируя шаблон компонента. Во первых нужно правильно подключить наш файл скрипта в шаблоне веб формы.
Во вторых весь требуемый нам js и php код будем реализовывать в подключенном файле. Не нужно не каких дополнительных запросов для получения данных о веб форме, вопросах и полях делать не нужно они уже все есть в объекте, по этому наш скрипт начнем с формирования нескольких объектов.
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();?>
<script>
var arParams = <?=CUtil::PhpToJSObject($FORM->arParams)?>;
var arForm = <?=CUtil::PhpToJSObject($FORM->arForm)?>;
var arQuestions = <?=CUtil::PhpToJSObject($FORM->arQuestions)?>;
var arAnswers = <?=CUtil::PhpToJSObject($FORM->arAnswers)?>;
var arDropDown = <?=CUtil::PhpToJSObject($FORM->arDropDown)?>;
var arMultiSelect = <?=CUtil::PhpToJSObject($FORM->arMultiSelect)?>;
Вот пример кода формирования для поля с типом текст.
function SetValue(Question,value){
switch (arQuestions[Question].TITLE_TYPE) {
case 'text':
//form_text_answer_id
for(var index in arAnswers[Question]) {
document.getElementsByName('form_'+arQuestions[Question].TITLE_TYPE+'_'+arAnswers[Question][index].ID)[0].value = value;
}
break;
case 'textarea':
//form_textarea_answer_id
break;
case 'password':
//form_password_answer_id
break;
case 'date':
//form_date_answer_id
break;
case 'radio':
//form_radio_question_sid
break;
case 'dropdown':
//form_dropdown_question_sid
break;
case 'checkbox':
//form_checkbox_question_sid[]
break;
case 'multiselect':
//form_multiselect_question_sid[]
break;
case 'hidden':
//form_hidden_answer_id
break;
}
}
</script>
Лучше б виз. редактор не зарезает js? Никогда не использовал визуальные шаблоны из-за их ограниченности. По моему проще сделать через шаблон компонента.
да, я тоже обычно это через шаблон компонента делаю, в нем больше возможностей хотя начинал делать веб-формы когда-то в своё время тоже через этот механизм, но после дня ковыряний решил отказаться от этого подхода.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».