Проверить состояние перед вызовом ajax формы в drupal 7

Я написал ajax callback для текстового поля, и он вызывается при размытии.

Но прежде чем перейти к обратному вызову ajax, я хочу проверить условие, чтобы текстовое поле не было пустым.

Итак, я хочу, если текстовое поле не пустое, тогда вызывается обратный вызов ajax, иначе он не должен вызываться.

заранее спасибо

form_example - это имя моего модуля

Контроль формы

$form['price_form']['item'] = array(
    '#type' => 'textfield',
    '#title' => 'Item Name?',
    '#size' => 10,
    '#maxlength' => 25,
    '#id' => 'nameId',
    '#required' => TRUE,
    '#ajax' => array(
        // #ajax has two required keys: callback and wrapper.
        // 'callback' is a function that will be called when this element changes.
        'callback' => 'form_example_simplest_callback',
        'wrapper' => 'listDiv',
        'effect' => 'fade',
    ),
    '#autocomplete_path' => 'examples/form_example/item_name_autocomplete_callback',
);

Код JS

(function($){
    $(document).ready(function(){
        alert('Hi, Javascript successfully attached');

        Drupal.behaviors.form_example = {
            attach: function (context, settings) {

                // Overwrite beforeSubmit
                Drupal.ajax['nameId'].options.beforeSubmit = function (form_values, element, options) {
                    alert('dsf');
                }
            }
        };
    });
})(jQuery);

Я печатаю оповещение для тестирования. Я пробовал по его имени и идентификатору, но не получал оповещения. Я опустился ниже оповещения, поэтому включение js в порядке.

alert('Hi, Javascript successfully attached');

1 ответ

Решение

Реализация ajax в форме api позволяет вам указать обработчик beforeSubmit, который будет запущен перед отправкой. В соответствии с этим: http://malsup.com/jquery/form/, если эта функция возвращает false, форма не будет отправлена.

Вы должны иметь возможность добавить обработчик beforesubmit что-то вроде:

Drupal.behaviors.MyModule = {
  attach: function (context, settings) {

    // Overwrite beforeSubmit
    Drupal.ajax['your_element'].options.beforeSubmit = function (form_values, element, options) {
        // check the textfield isn't blank then return false;
    }
  }
};
Другие вопросы по тегам