2011-10-07 57 views
1

我使用hook_form_alter添加一個按鈕,一個WebForm:添加按鈕WEBFORM - 問題:做提交,而不是Ajax回調

$form['submit_ajaxSearch'] = array(
       '#type' => 'button', 
       '#ajax' => array(
        'action' => 'click', 
        'callback' => 'search_callback', 
        'wrapper' => 'confirm', 
        'method' => 'replace', 
        'name' => 'search', 
       ), 
       '#value' => t('Address Lookup'), 
      ); 

我可以設置一個jQuery。點擊()模塊中,但可以」 t獲取Ajax回調來執行。當按鈕作爲模塊的一部分添加到表單時(即,如果它是mymodule_form),但在mymodule_form_alter中添加到網絡表單時,它將執行提交而不是回調。

如何獲得ajax回調來執行Ajax,而不是提交

回答

1

由於Drupal創建了一個「提交」按鈕,即使您只想要一個簡單的按鈕,您也必須指定drupal,您不希望該按鈕執行提交回調。 您可以通過將該按鈕的「#executes_submit_callback」設置爲false來完成此操作。

如:

  $form['submit_ajaxSearch'] = array(
       '#type' => 'button', 
       '#ajax' => array(
        'action' => 'click', 
        'callback' => 'search_callback', 
        'wrapper' => 'confirm', 
        'method' => 'replace', 
        'name' => 'search', 
       ), 
       '#value' => t('Address Lookup'), 
       '#executes_submit_callback' => FALSE, 
      ); 
0

由於drupal doc states it 「#executes_submit_callback」 不會阻止頁面發送POST請求。

要做到這一點,你需要添加自定義屬性,如:

#attributes' => array('onclick' => 'return (false);')