В форме есть select. Форма многошаговая. Разговор идёт не про первый шаг. Данные для #options приходят из переменной.
Задача: Скрыть select если только 1 options. И передать значение форме.
Как пытался решить:
1) В php писал
if (count($options) == 1)
и подсунуть поле с #markup и классом hide. Так конечно можно, но ИМХО велосипед ещё тот.
2) Через js
if ($("select[id=edit] option").size() == 1)
но не могу нормально подгрузить js.
Вызывают js файл через, drupal_add_js в форме-шаге. Ajax обработчик обычный return $form;
.
Я так понял из нижеследующего, что подгружаю js файл одновременно с ajax запросом, поэтому самого select ещё как бы нет.
Консоль выдаёт:
Синхронный XMLHttpRequest в основной нити является устаревшим из-за его пагубного влияния на работу конечного пользователя. Для получения дополнительной помощи обратитесь к ...
Ответы
if (count($options) > 1) {
$form['select'] = array(...);
}
А как тогда передать #options в сабмит, если он один?
В этом случае поле просто скрывается, и после сабмита его значение не попадает в
$form_state['values']
Пришлось сделать так (не уверен, что по фен-шую, но работает):