@weynemeynen а зачем?
:) чтобы скрыть
Есть несколько разных способов разной степени костыльности пробросить атрибут, но я спросил потому, что скорее всего исходная задача в принципе должна решаться по-другому. Как минимум потому, что конкретный
input
и так изначально скрыт ;)Если не хочется отправлять данные на сервер — подойдет модификатор
disabled
. Чтобы при этом визуально исчезал айтем группы, можно на этот модификатор добавитьdisplay: none
.ОК. исходная задача - кастомизация Checkbox и Radio http://habrahabr.ru/post/144104/
Вов, дай мне хотябы один способ пробросить атрибут, я не додумался сам, и в документации не нашёл, поэтому и спрашиваю..
Нативный контрол в
bem-components
скрывается с помощью css без установки аттрибутаhidden
. Для кастомизации представления используется элемент checkbox__box и модификаторы самого блока.@Guria все правильно написал. Нет причин использовать
hidden
, чтобы как угодно стилизовать и том числе скрывать чекбоксы внутри группы.Но если чисто из любви к искусству, могу предложить два плохих способа:
content
на своем уровне копипастом из https://github.com/bem/bem-components/blob/v2/common.blocks/checkbox-group/checkbox-group.bemhtml#L8-L36 и тупо пробросить нужное поле.this.ctx.options
и перебором массива можно будет найти индексы hidden-полей. АapplyNext()
вернет массив массивов, содержащий BEMJSON с чекбоксами и<br>
. Так что перебором этого массива и с поправкой на<br>
можно будет добавить знание проhidden
нужным айтемам. А потом написать шаблон наcheckbox
, в котором пробросить это знание вthis
, тогда оно будет доступно из элементаcontrol
.PS: Использовать любой из способов на реальном проекте ни в коем случае не нужно.
ОК, а как добавить свой атрибут в option (select), например, data-какой-нибудь, в bemjson / bemhtml / bh? Чтобы было нечто:
<option data-filter-type="stringMatch">...</option>
Здесь нужно сначала уточнить, чего хочется добиться в результате, т.к. в
select
на самом деле используется один<input type="hidden">
, в значение которого выставляется текущее выбранное значение селекта (так сделано потому что браузеры кэшируют состояние нативного<select>
и это вызывает кучу проблем).нужно установить свой кастомный атрибут для дальнейшей обработки выбранной опции селекта. Например: такое поведение https://89b748288a516d1649acbafa0abff0c719364023.googledrive.com/host/0BwpgJqxcuprwWG5aRUZYcEYwTEE/index.html
изобразить на select по BEM https://89b748288a516d1649acbafa0abff0c719364023.googledrive.com/host/0BwpgJqxcuprwWG5aRUZYcEYwTEE/select.html
известно, что на прочих узлах атрибут можно вставить так: (bemjson) attrs: {атрибут: значение} (bh) ctx.attr('role', 'button'); ... а как произвольный атрибут добавить в option ?
Если я правильно понял задачу, то достаточно связать значение селекта и тип фильтра. Что-то типа:
PS: Если необходима возможность сбрасывать селект в пустое значение — стоит использовать select_mode_radio-check.
нет, Вов, проще.. было бы хорошо иметь возможность, видеть в документции (специализированные поля блока select) способ добавления кастомных атрибутов в поле options наряду с прочими (val, text, checkedText ... др.)
options : [ { val : 1, text : 'Twitter', checkedText : 'tw', icon : { block : 'icon', mods : { social : 'twitter' } }, // типа того: attrs: { 'data-filter-type': 'bla-bla' } } ]
Способ добавления кастомных атрибутов куда? Вот пример HTML блока
select
, где должны оказаться атрибуты и что это даст?я понял, т.е. если атрибут окажется в menu-item, это ничего не даст...
изменяется только value в input type="hidden"
<div class="menu-item menu-item_theme_islands i-bem" data-filter-type="я - кастомный атрибут изначально заданный в options, мне хочется быть здесь" data-bem="{...}" role="menuitem"></div>
выходит с атрибутами в option не поиграешься :(
При передачи данных в форму отправки данных, необходимо передавать некоторые значения для идентификации - формы, текущей страницы, время и дата отправки и т.д. Для идентификации формы используется значение атрибута
value=""
. Это значение переменное, меняется в зависимости от вида формы.Ожидается:
Создал
input_type_hidden.bemhtml.js
:Хотелось бы указывать значение
value=""
в bemjson, и чтобы атрибут пробросился к контролу:Как это сделать?
В дальнейшем планируется сделать:
jquery.serialize()
ajax
через форму phpИли вообще может есть более оптимальное решение по сбору информации с формы?
Более оптимальное решение для
<input type="hidden">
использовать чистый BEMJSON вида: