Как добавить обработчик onchange в выпадающий список в Drupal? - PullRequest
2 голосов
/ 12 ноября 2011

Как я могу добавить обработчик onchange в выпадающий список в Drupal?Раскрывающийся список добавляется с помощью hook_form ().Я должен выполнить функцию в зависимости от функции onchange.Есть ли способ сделать это?

Ответы [ 4 ]

7 голосов
/ 18 ноября 2011

Вы можете добавить форму следующим образом:

 hook_form()
 {
   $form1["dropdown"] = array(
    '#type' => 'select',
    '#title' => t('Preview the page with themes available'),
    '#options' => $ptions,
    '#default_value' => 'defalut_value',
    '#attributes' => array('onchange' => "form.submit('dropdown')"),
 );
//Submit button:
$form1['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit '),
        '#attributes' => array('style' => 'display: none;'),
);

Теперь вы можете добавить функцию отправки с помощью hook_submit ().

4 голосов
/ 03 октября 2012

Вот простой пример использования '#ajax' свойства

$form['select'] = array(
  '#type' => 'select',
  '#title' => 'Option #1',
  '#options' => $option,
  '#ajax' => array(
    // Call function that rebuilt other field
    'callback' => 'ajax_load_field',
    'method' => 'replace',
    // div to be get replace by function output
    'wrapper' => 'chart',
    'effect' => 'fade'
  ),
);
1 голос
/ 03 июля 2013

Хотя я уверен, что Николас уже преодолел эту проблему, это может помочь тем, кто ищет решение.

Я использую D7 и получаю одинарные кавычки вокруг выпадающего списка, закодированные как «я полагаю,> check_plain. > Как мне этого избежать? - Николас Толи Коттрелл 2 июня в 16: 03

Я только что нашел "Drupal" способ сделать это.

Шаг 1, установите переменную для раскрывающегося списка с помощью drupal_add_js:

drupal_add_js(array('mymodule' => array('varname' => 'dropdown')), 'setting');

Шаг 2, добавьте строку атрибутов как

'#attributes' => array('onchange' => "form.submit(Drupal.settings.mymodule.varname)"),
1 голос
/ 18 ноября 2011

Если вы создаете другое поле формы с помощью этого раскрывающегося списка.

Тогда используйте AHAH для этого.

$form['my_form_submit'] = array(

'#type' => 'submit',

'#value' => t('Submit'),
'#weight' => 1,
'#submit' => array('my_form_submit'),//none JS version
'#ahah' => array(
  'event' => 'click',
  'path' => 'mymodule/js',  //Your ajax function path
  'wrapper' => 'myform-wrapper',
  'method' => 'replace',
  'effect' => 'fade',
  'progress' => array(
    'type' => 'bar',
    'message' => t('Loading...')
  )      
),
...