2012-08-08 44 views
0

我想使用ajax使一些表單元素變得可見或不可見,根據您在某些單選按鈕上做出的選擇。形成無線電來控制可見/不可見的代碼元素(ajax)

有兩種選擇:無線電的「標籤」或「形式」。 「標籤」是默認的,並且主體字段在開始時是可見的。但是,如果您單擊「表單」選項,而不是身體領域消失。然後我希望能夠再次點擊「標籤」並使身體領域再次可見,但在這裏我遇到了麻煩。

下面是相關代碼:

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']; 
} 

沒有人有任何的解釋,爲什麼$形式[「身體」] [「#訪問」] = TRUE不會使人體場再次可見? 我檢查了$ form數組,並發現當$ form_state ['input'] ['protocol_form_view_radios'] == 0爲真時,$ form ['body'] ['#access']實際上被設置爲1。

回答

0

有一個在#ajax回調

'callback' => 'format_and_filter_change_inpu t_callback', 

一個任性的空間是也存在於你的代碼?

+0

不,這只是一個錯誤。 – numfar 2012-08-08 15:30:28