0

ajax を使用して、いくつかのラジオ ボタンで行った選択に基づいて、いくつかのフォーム要素を表示または非表示にしようとしています。

ラジオには「タグ」または「フォーム」の 2 つの選択肢があります。「tag」がデフォルトで、body フィールドは最初から表示されています。ただし、代わりに「フォーム」の選択をクリックすると、本文フィールドが消えます。次に、「タグ」をもう一度クリックして、本文フィールドを再び表示できるようにしたいのですが、ここで問題が発生します。

関連するコードは次のとおりです。

function format_and_filter_form_protocol_node_form_alter(&$form, &$form_state,$form_id) {

   $form['protocol_form_view_radios'] =  array(
                             '#type' => 'radios',
                             '#title' => 'Input by:',
                             '#options' => array('taging','form'),
                             '#default_value' => 0,
                             '#ajax' => array(
                                              'callback' => 'format_and_filter_change_input_callback',
                                              'wrapper' => 'body-add-more-wrapper',
                                              ),
                    '#executes_submit_callback' => FALSE,
                             '#limit_validation_errors' => array(),
                             '#weight' => -31,
                             );

}

function format_and_filter_change_input_callback($form,&$form_state) {

   if ($form_state['input']['protocol_form_view_radios'] == 0) {
     $form['body']['#access'] = TRUE;
   }
   else {
     $form['body']['#access'] = FALSE;
   }

  return $form['body'];
}

$form['body']['#access'] = TRUE が body フィールドを再度表示しない理由を説明している人はいますか? $form 配列を確認したところ、$form_state['input']['protocol_form_view_radios'] == 0 が true の場合、$form['body']['#access'] が実際に 1 に設定されることがわかりました。

4

1 に答える 1

0

#ajax コールバックにわがままなスペースがあります

'callback' => 'format_and_filter_change_inpu t_callback',

それはあなたのコードにも存在しますか?

于 2012-08-08T15:17:37.620 に答える