Добавление кнопки в веб-форму - Проблема: выполнение отправки, а не обратный вызов Ajax - PullRequest
1 голос
/ 07 октября 2011

Я добавляю кнопку в веб-форму, используя 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), но при добавлении в веб-форму в mymodule_form_alter она выполняет отправку вместо обратного вызова.

Как я могу получить обратный вызов ajax для выполнения Ajax, а не Submit ?

Ответы [ 2 ]

1 голос
/ 03 июля 2012

Поскольку 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 голосов
/ 23 апреля 2015

Когда drupal doc заявляет это , "#executes_submit_callback" не будет препятствовать отправке страницей запроса POST.

Для этого вам необходимо добавить пользовательский атрибут, такой как:

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