2011-10-07 6 views
1

hook_form_alter를 사용하여 웹 폼에 버튼을 추가하려고합니다.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 .click()을 설정할 수는 있지만 실행할 Ajax 콜백을 얻을 수 없습니다. 버튼이 모듈의 일부로 양식에 추가 될 때 작동합니다 (예 : mymodule_form 인 경우).하지만 mymodule_form_alter의 웹 폼에 추가되면 콜백 대신 제출이 실행됩니다.

ajax 콜백을 사용하여 xxx27이 아닌 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);')