Свойство с большим списком (датой) | Для разработчиков | Сайты для бизнеса

Свойство с большим списком (датой)


Если в инфоблоке необходимо использовать свойство типа список, то в значениях этого свойства нужно указывать все варианты для вывода, которые должен выбирать пользователь в форме на странице сайта. Но вариантов может быть очень много, например если это дата, особенно если предлагается выбрать год (дату рождения) начиная с 1919, то список может быть очень большим, и все эти значения приходиться вводить вручную в админке в нашем списке.
Очевидно, что большой список значений, который к тому же идёт по порядку, можно вывести программно в шаблоне компонента.
Вот как это можно сделать:
  1. <div class="wrap_prop">
  2. <div class="subscribe_prop_name"><?=GetMessage("IBLOCK_FORM_DATE")?></div>
  3. <select class="chosen-select" name="day">
  4. <?for ($i = 1; $i <= 31; $i++):?>
  5. <option value="<?=$i?>"><?=$i?></option>
  6. <?endfor;?>
  7. </select>
  8. <select class="chosen-select" name="month">
  9. <?for ($i = 1; $i <= 12; $i++):?>
  10. <option value="<?=$i?>"><?=$i?></option>
  11. <?endfor;?>
  12. </select>
  13. <select class="chosen-select" name="year">
  14. <?for ($i = date("Y"); $i >= 1919; $i--):?>
  15. <option value="<?=$i?>"><?=$i?></option>
  16. <?endfor;?>
  17. </select>
  18. </div>

Но есть одна проблема, если мы выводим дату программно, то значения не запишутся в админку, поскольку этих значений там нет. Поэтому свойство должно иметь тип строка, а не список, но для этого нам также понадобиться доработать шаблон. Для этого отобразим наши свойства в срытых инпутах, указав им нужные ID из инфоблока:
  1. <input type="hidden" name="PROPERTY[36][0]" size="30" value="">
  2. <input type="hidden" name="PROPERTY[37][0]" size="30" value="">
  3. <input type="hidden" name="PROPERTY[38][0]" size="30" value="">
И теперь нам также нужно написать небольшой JavaScipt код, который будет в наши скрытые поля подставлять нужные нам значения перед отправкой формы:
  1. <script>
  2. jQuery(document).ready(function($) {
  3. $('#subscribe_form').on( "submit", function() {
  4. //event.preventDefault();
  5. //event.stopPropagation();
  6. //alert($('select[name="day"]').val());
  7. $('input[name="PROPERTY[36][0]"]').val($('select[name="day"]').val());
  8. $('input[name="PROPERTY[37][0]"]').val($('select[name="month"]').val());
  9. $('input[name="PROPERTY[38][0]"]').val($('select[name="year"]').val());
  10. //$('#subscribe_form').submit();
  11. })
  12. })
  13. </script>
Код, который с комментариями, может вам понадобиться для отладки.
Собственно теперь вы может записывать нужные вам значения в инфоблок, не указывая по сто и более значений вручную в админке у свойства, при этом отображая его как список, который выбирает пользователь, а не вводит значения в тестовые поля. 

Загрузка

10 просмотров
05.11.2019


Комментариев пока нет
Оставить комментарий
 
Текст сообщения*
Защита от автоматических сообщений
 


Сервисы




Последние публикации

14.Ноя.2019 Не выгружаются заказы в 1С
Не выгружаться заказы в 1С из сайта на битрисе могут по разн...

07.Ноя.2019 Видео youtube на фон сайта
Как-то на сайт мне нужно было вывести видео на весь экран, к...

05.Ноя.2019 Свойство с большим списком (датой)
Если в инфоблоке необходимо использовать свойство типа списо...

05.Ноя.2019 Основные настройки BitrixVM
Приведу основные пути и файлы конфигурации в виртуальной маш...

24.Окт.2019 Безлимитный интернет от Билайн не безлимитный
Как-то мне пришла смс от Билайна, что мне доступна услуга бе...

24.Окт.2019 Как мне помог сервис kwork.ru
Хочу поделиться своей истории о том, как я начал зарабатыват...

04.Май.2019 Вывод ошибок в .settings.php
Если у вас на сайте произошла ошибка, но она не отображается...

05.Дек.2018 403 Forbidden в админке Bitrix

15.Июн.2018 Пагинация REL PREV NEXT 1С-Битрикс
Что бы облегчить поисковикам работу можно указать в теге hea...

07.Июн.2018 Как выровнять блок по центру экрана
Что бы выровнять блок по горизонтали, достаточно прописать с...