1

我正在使用 hook_form_alter 向网络表单添加一个按钮:

$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),它可以工作,但是当添加到 web 表单时,mymodule_form_alter它正在执行提交而不是回调。

如何让 ajax 回调来执行 Ajax,而不是Submit

4

2 回答 2

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,
            );
于 2012-07-03T06:48:32.163 回答
0

正如drupal 文档所述,“#executes_submit_callback”不会阻止页面发送 POST 请求。

为此,您必须添加一个自定义属性,例如:

#attributes' => array('onclick' => 'return (false);')
于 2015-04-23T13:33:08.370 回答