2016-05-18 4 views
1

Ich möchte die Nachricht in der Textarea entsprechend der ausgewählten Option aktualisieren, wissen Sie, wie ich so etwas tun kann?Feld mit Drupal Ajax hinzufügen und Liste auswählen

Select-Liste: field_level_list mit Optionen: Ticket Ebene 1/Ticket Ebene 2/Ticket Level 3

Dies ist der Haken form_alter:

function custom_support_form_support_ticket_node_form_alter(&$form, &$form_state, $form_id) 
{ 
    $form['field_level_list']['und']['#ajax'] = [ 
     'event' => 'change', 
     'callback' => 'custom_support_ticket_ajax_form_callback', 
     'wrapper' => 'level_message', 
     'effect' => 'slide' 
    ]; 

    $form['field_level_list']['und']['#weight'] = -2; 
    $form['field_level_list']['und']['#suffix'] = '<div id="level_message"></div>'; 
} 

Dies ist die Callback-Funktion:

function custom_support_ticket_ajax_form_callback($args) 
{ 
    $cas = $args['field_level_list']['und']['#value']; 

    switch($cas){ 
     case 1: 
      $message = t('Ticket 1'); 
      break; 
     case 2: 
      $message = t('Ticket 2'); 
      break; 
     case 3: 
      $message = t('Ticket 3'); 
      break; 
     default : 
      $message = 'X'; 
    } 

    $form['level_message']['level_textarea'] = [ 
     '#type' => 'textarea', 
     '#title' => 'message', 
     '#value' => $message, 
     '#weight' => -9, 
    ]; 

    $form['level_message']['level_submit'] = [ 
     '#type' => 'submit', 
     '#value' => 'Send', 
     '#ajax' => [ 
      'event' => 'click', 
      'callback' => 'custom_support_sendMessage_callback' 
     ], 
     '#weight' => -8 
    ]; 


    return ajax_command_replace('#level_message', $form['level_message']);} 

Das funktioniert, aber ich bekomme immer die gleiche Nachricht ($ Nachricht). Wenn ich zuerst auf 'Ticket Level 1' klicke, bekomme ich 'Ticket 1' im Textfeldfeld, aber nachdem ich zu 'Ticket Level 2' gewechselt habe, erscheint die Nachricht 'Ticket 2' nicht.

Antwort

0

Ich denke, es ist nicht der beste Weg, aber es funktioniert:

$form['#prefix'] = '<div id="level_message">'; 
$form['#suffix'] = '</div>';