2016-12-08 15 views
0

Я пытаюсь автозаполнять текстовые поля после выбора элемента из списка выбора. Я имею в виду: сначала я хочу, чтобы пользователь выбирал элемент из списка выбора, а затем еще 3 текстовых поля, и я хочу дать им разные значения на основе выбранного.Поля автозаполнения в drupal7

+0

Пожалуйста, постарайтесь быть более конкретным. Возможно, добавьте то, что вы пробовали, и проблемы, которые вы обнаружили. – zuazo

+0

У меня есть тип контента, в котором у меня есть список выбора. Для выбранного списка я использовал таксономию. Список выбора - это список компаний, а остальные поля - текстовые поля. У них есть информация о местонахождении, стране и телефоне компании. Когда я выбираю компанию, у нее будет своя страна, местоположение и телефон, поэтому я хочу их заполнить автоматически. Я пробовал с иерархическим списком, но это не сработало, потому что есть только один список. Я также пробовал модули автозаполнения, но это также не сработало. @zuazo – Kris

ответ

0

Вам необходимо использовать Drupal "Ajax framework". Подготовьте свои поля в функции 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 framework.

+0

Отличный ответ, спасибо! – Kris