表单无线电以控制可见/不可见的代码元素(ajax)

时间:2012-08-08 14:17:41

标签: php drupal

我正在尝试使用ajax根据您在某些单选按钮上做出的选择,使某些表单元素变得可见或不可见。

有两种选择:无线电的“标签”或“表格”。 “tag”是默认值,并且正文字段可见。但是如果你单击“表单”选项而不是正文字段消失。然后我希望能够再次单击“标记”并再次显示正文字段,但它在这里遇到了麻烦。

以下是相关代码:

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不会再使身体字段可见? 我检查了$ form数组,看到当$ form_state ['input'] ['protocol_form_view_radios'] == 0为真时,$ form ['body'] ['#access']实际设置为1。

1 个答案:

答案 0 :(得分:0)

#ajax回调中有一个任性的空间

'callback' => 'format_and_filter_change_inpu t_callback',

你的代码中是否也有这个?