0

从选择列表中选择一个项目后,我正在尝试自动填充文本字段。我的意思是:首先我希望用户从选择列表中选择一个项目,然后会有另外 3 个文本字段,我想根据所选择的给他们不同的值。

4

1 回答 1

0

您需要使用 Drupal “Ajax 框架”。请在 hook_form_alter 函数中准备好你的字段。

function hook_form_alter(&$form, &$form_state, $form_id) {
  if (isset($form['type']) && $form['type']['#value'] . '_node_settings' == $form_id) {
    $form['select_field'] = array(
      '#ajax' => array(
        'callback' => '_mymodule_ajax_example_simplest_callback',
        'wrapper' => 'replace_textfield_div',
       ),
    );

    // This entire form element will be replaced with an updated value.
    $form['textfield_to_autofill'] = array(
      '#prefix' => '<div id="replace_textfield_div">',
      '#suffix' => '</div>',
    );
  }
}
function _mymodule_ajax_example_simplest_callback(&$form, $form_state) {
  // The form has already been submitted and updated. We can return the replaced
  // item as it is.
  $commands = array();
  if($form_state['values']['select_field'][LANGUAGE_NONE][0]['value'] == "some_value"){
    $form['textfield_to_autofill'][LANGUAGE_NONE][0]['value']['#value'] = "some_value";
    $commands[] = ajax_command_replace("#replace_textfield_div", render($form['textfield_to_autofill']));
  }
  $page = array('#type' => 'ajax', '#commands' => $commands);
  ajax_deliver($page);
}

这里是ajax 框架的帮助链接。

于 2016-12-24T19:08:18.553 回答