我正在使用hook_form_alter向webform添加一个按钮:
$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
中的webform时,它正在执行提交而不是回调。
如何获取执行Ajax的ajax回调,而不是提交?
答案 0 :(得分: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,
);
答案 1 :(得分:0)
作为drupal doc states it," #ecutive_submit_callback"不会阻止页面发送POST请求。
为此,您必须添加自定义属性,如:
#attributes' => array('onclick' => 'return (false);')