1
選択したオプションに従ってテキストエリアのメッセージを更新したいのですが、どうすればいいのでしょうか?drupal ajaxでフィールドを追加してリストを選択
選択リスト:オプションでfield_level_list:チケットレベル1 /チケットレベル2 /チケットレベル3
これはフック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>';
}
これは、コールバック関数である:
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']);}
それは動作しますが、私はいつも同じメッセージ($メッセージ)を受け取ります。 「チケットレベル1」を最初にクリックすると、テキストエリアに「チケット1」が表示されますが、「チケットレベル2」に変更すると「チケット2」というメッセージは表示されません。