Есть поле field_name. Необходимо этому select добавить атрибут.
Добавляю через template.php
$form['field_name']['#attributes']['onchange'] = 'function'
то 'onchange' добавляется к div, но никак не к select. Объясните, где туплю.
Оно-то и к div-у прокатило бы, но стоит иерархический список, и скрипт срабатывает даже тогда, когда меняется родительский термин, чего не надо.
Комментарии
Поглядите тут print_r($form).
Например на сабмит кнопку webform событие onclick вешается так: $form['actions']['submit']['#attributes']['onclick'] = "";
Видимо до конца не досмотрел, в пределах значений field_name ничего об select не было. Буду смотреть дальше
ЗЫ. Все же капать нужно в пределах значение field_name
Попробуйте hook_form_alter - там будет доступ к самому селекту
так через хук и пытаюсь
на выходе получаю:
[#type] => container
[#attributes] => Array (
[class] => Array (
[0] => field-type-taxonomy-term-reference
[1] => field-name-field_name
[2] => field-widget-taxonomy-hs
)
)
[#weight] => 41
[#tree] => 1
[#language] => und
[und] => Array (
[#entity] => stdClass Object (
[uid] => 1
[name] => admin
[type] => type_application
[language] => und
[title] =>
[status] => 0
[promote] => 0
[sticky] => 0
[created] => 1431005138
[revision] =>
[comment] => 2
[menu] => Array (
[link_title] =>
[mlid] => 0
[plid] => 0
[menu_name] => main-menu
[weight] => 0
[options] => Array ( )
[module] => menu
[expanded] => 0
[hidden] => 0
[has_children] => 0
[customized] => 0
[parent_depth_limit] => 8
)
)
[#entity_type] => node
[#bundle] => type_application
[#field_name] => field_name
[#language] => und
[#field_parents] => Array ( )
[#columns] => Array (
[0] => tid
)
[#title] => Имя
[#description] =>
[#required] => 1
[#delta] => 0
[#type] => hierarchical_select
[#config] => Array (
[module] => hs_taxonomy
[params] => Array (
[vid] => 3
[exclude_tid] =>
[root_term] => 234
[entity_count_for_node_type] =>
)
[save_lineage] => 0
[enforce_deepest] => 0
[entity_count] => 0
[require_entity] => 0
[resizable] => 0
[level_labels] => Array (
[status] => 0
[labels] => Array (
[0] =>
[1] =>
[2] =>
)
)
[dropbox] => Array (
[status] => 0
[title] => Все выборы
[limit] => 0
[reset_hs] => 1
)
[editability] => Array (
[status] => 0
[item_types] => Array (
[0] =>
[1] =>
[2] =>
)
[allowed_levels] => Array (
[0] => 1
[1] => 1
[2] => 1
)
[allow_new_levels] => 0
[max_levels] => 2
)
[animation_delay] => 400
[special_items] => Array ( )
[render_flat_select] => 0
[config_id] => taxonomy-field_name
)
[#default_value] => Array (
[0] => 136
)
[#process] => Array (
[0] => form_hierarchical_select_process
[1] => hs_taxonomy_widget_process
)
[#after_build] => Array (
[0] => field_form_element_after_build
)
)
[#access] => 1
)
и вот куда здесь прописать дополнительный атрибут к селекту
[#type] => hierarchical_select
это не совсем select, согласно form api.
Припишите js'ом.
<?php $form['field_name']['und']['#attributes']['onchange'] = 'function'; ?>
пробовал этот вариант, тоже к диву добавляет.
Откройте код модуля hierarchical_select, в нем найдите темизацию theme_hierarchical_select и в нем Вы увидите, что хрен Вы ему добавите атрибуты(в смысле самому селекту), чтобы это сделать - Вам надо переопределить цепочку темизации hierarchical_select до того места, где Вам нужен класс, либо задать свою цепочку темизации и подсунуть её через hook_form, в случае, если такое нужно провернуть только в одной форме.
Хотя вклиниться можно еще через hook_process, и сделать все на этом уровне.
Правда я не совсем понимаю, зачем тратить несколько часов на геморрой с выводом hierarchical_select, когда можно просто за пару минут сделать это через js?
Проблема в том, что в js не силен.
Пытаюсь через query:
jQuery("select").change(function() {
alert('1');
});
});
Срабатывает только один раз и то на первый select.
Если:
jQuery("#edit-field-name-und-hierarchical-select-selects-2").change(function() {
alert('1');
});
});
вообще не срабатывает.
вот постепенно учу
делать проверку по атрибуту selected, но в последнем селекте не зависимо от выбранного значения
<option value="label_2" class=" level-label" selected="selected"></option>
все так и застрял на этом.
Видимо, легче отказаться от hs и просто сделать зависимые селекты, потому что после каждого изменения предыдущего селекта происходит перезагрузка этих селектов и меняются id (лечится обращением по имени), но слетают все присвоенные атрибуты.