Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Веб-форма

00 голосов
6
Здравствуйте.

На форме есть 2-3 элемента dropdown(Категория-Раздел-Подраздел),в которые заранее занесены знаачения.
Как сделать так чтоб привыборе в первом dropdown изменялись значения во втором, а при выборе во втором менялись в третьем?

Так же есть необходимость, чтоб при нажатии на кнопку формы на ней появ. два дополнительних вопроса с полями ввода, как это сделать?

Подскажите, если кто знает.
Заранее спасибо.
спросил 15 Март, 13 от Kera (280 баллов)

6 Ответы

00 голосов
Вот пример для формы ручной верстки без ajax для случая, когда первый уровень - авторы, а второй - книги. Может, пригодится.
Код
<script>
var hash = {101: {10:'Московский Автор',20:'Питерский Автор',30:'Ростовский Автор'},
         102: {40:'Немецкий Автор',50:'Американский Автор',60:'Английский Автор'}}
function f(s) {
   a = document.getElementById('auth');a.innerHTML = '';
   for(i in hash[s.value]) {
      o = document.createElement('OPTION');
      o.innerHTML = hash[s.value][i];o.value = i;
      a.appendChild(o);
   }
}
</script>
<select id="category" onchange="f(this)">
   <option value="101">Отчечественные авторы</option>
   <option value="102">Зарубежные авторы</option>
</select>
<select id="auth">
   <option>11</option>
</select>
<script>f(document.getElementById('category'));</script>
ответил 15 Март, 13 от Eddie (2,060 баллов)
00 голосов
А что делать если первый уровень и тд нужно составить из секций инфо блока?
ответил 19 Март, 13 от Kera (280 баллов)
00 голосов
Запросить список секций, как например это делает компонент bitrix:menu.sections
В API есть метод CIBlockSection::GetList
ответил 29 Май, 13 от Eddie (2,060 баллов)
00 голосов
А как быть если подуровни это подсекции инфоблока, значит мне как- то нужно в
function f(s) {
a = document.getElementById('auth');a.innerHTML = '';
for(i in hash[s.value]) {
o = document.createElement('OPTION');
o.innerHTML = hash[s.value][i];o.value = i;
a.appendChild(o);
}
}

использовать CIBlockSection::GetList, я не совсем онимаю как это будет выглядеть?

А может не делать три дропдоуна в одном компоненте, а сделать три однотипных, но как в этом случаи передовать параметр дропдоуну нижнего уровня при выборе в дропдоуне верхненго уровня?
ответил 26 Авг, 13 от Kera (280 баллов)
00 голосов
Это яваскрипт, в него ничего внедрять не нужно. Ваша задача - нарисовать средствами шаблонизатора php его код. Саму функцию менять не нужно, менять нужно только JSON hash, и у option значение value в html-части. Для этого можно сформировать соответствующую структуру в php и использовать json_encode.
ответил 25 Ноя, 13 от Eddie (2,060 баллов)
00 голосов
Вы не могли бы привести пример кода?
Буду очень благодарен.

Как потом выбирать данные из этих полей, в этом кастом контроле?
ответил 07 Март, 14 от Kera (280 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 26 Март, 14 от MiRA (100 баллов)
0 голосов
1 ответ
спросил 27 Фев, 14 от sergey911 (120 баллов)
0 голосов
5 ответов
спросил 10 Дек, 13 от MagKinG (100 баллов)
0 голосов
6 ответов
спросил 21 Окт, 13 от Keis (160 баллов)
0 голосов
8 ответов