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

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


Если в инфоблоке необходимо использовать свойство типа список, то в значениях этого свойства нужно указывать все варианты для вывода, которые должен выбирать пользователь в форме на странице сайта. Но вариантов может быть очень много, например если это дата, особенно если предлагается выбрать год (дату рождения) начиная с 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>
Код, который с комментариями, может вам понадобиться для отладки.
Собственно теперь вы может записывать нужные вам значения в инфоблок, не указывая по сто и более значений вручную в админке у свойства, при этом отображая его как список, который выбирает пользователь, а не вводит значения в тестовые поля. 

Загрузка

7631 просмотр
05.11.2019


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


Сервисы




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

24.окт.2021 Битрикс Работа с сокетами Ошибка! Не работает
В проверке сайте можно наблюдать такую ошибку
Работа ...

17.июл.2021 Как передать Roistat в заказ 1С-Битрикс
Передать ID Roistat можно в сам заказ в Битриксе после его о...

21.июн.2021 Сбой на файле, ошибка распаковки пакета
При очередном обновлении 1С-Битрикс выскочила ошибка [UUGZA0...

03.июн.2020 Не выводиться заглушка в композитном кеше
Столкнулся с тем, что при указании заглушки в динамической о...

01.апр.2020 Установка SSL сертификата LetsEncrypt на BitrixVM
Установка SSL сертификата LetsEncrypt на виртуальную машину ...

07.мар.2020 Битрикс настройка SSL, ошибка работы с сокетами
Заходим в меню битрикса выбираем 8. Manage pool web servers ...

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

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

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

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