1

我在文本字段上编写了 ajax 回调,并在模糊事件中调用它。

但在它进行 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);

我正在打印警报以进行测试。我尝试了它的名称和 ID,但没有收到警报。我得到了警报,所以 js 包含很好。

alert('Hi, Javascript successfully attached');
4

1 回答 1

8

表单 api 中的 ajax 实现允许您指定将在提交之前运行的“beforeSubmit”处理程序。根据这个: http: //malsup.com/jquery/form/#options-object如果该函数返回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;
    }
  }
};
于 2013-09-08T23:48:21.517 回答