Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Drupal 7模块自定义JavaScript AJAX函数调用_Jquery_Ajax_Drupal 7 - Fatal编程技术网

Jquery Drupal 7模块自定义JavaScript AJAX函数调用

Jquery Drupal 7模块自定义JavaScript AJAX函数调用,jquery,ajax,drupal-7,Jquery,Ajax,Drupal 7,我正在尝试向节点编辑表单中的复选框集合添加一些JavaScript功能,如下所示: 当选中/取消选中每个框时,我希望AJAX代码做出响应。我试图将一些AJAX功能附加到复选框中,这似乎如图所示,但存在两个问题: 我得到以下错误uncaughttypeerror:无法读取未定义的--ajax.js的属性'apply' 如果我取消选中相同的复选框并重新选中,我的AJAX代码将不会响应(我承认这可能是由于上述错误) 下面的代码是我添加赞助商的模块代码。js代码已加载: function conten

我正在尝试向节点编辑表单中的复选框集合添加一些JavaScript功能,如下所示:

当选中/取消选中每个框时,我希望AJAX代码做出响应。我试图将一些AJAX功能附加到复选框中,这似乎如图所示,但存在两个问题:

  • 我得到以下错误uncaughttypeerror:无法读取未定义的--ajax.js的属性'apply'

  • 如果我取消选中相同的复选框并重新选中,我的AJAX代码将不会响应(我承认这可能是由于上述错误)

  • 下面的代码是我添加赞助商的模块代码。js代码已加载:

    function content_event_form_alter(&$form, &$form_state, $form_id){
    
        if($form_id == 'SPECIFIC-FORM-ID'){
    
            drupal_add_js( drupal_get_path('module', 'content_event') . '/js/sponsors.js', array('type'=>'file', 'scope'=>'header', 'group'=>'JS_THEME') );
    
            drupal_add_js(array('content_event' => $form['field_exhibitor'][$form['field_sponsors']['#language']]['#default_value']), 'setting');
    
            /******************************/
            $form['field_exhibitor'][$form['#node']->language]['#ajax'] = array(
              'callback' => 'my_js',
            );
    
        }
    }
    
    function my_js(){
        $commands[] = ajax_command_invoke('fieldset#node_event_major__form_group_sponsors div.form-type-checkbox', 'test');// . $element['country']['#id'], 'focus');
        return array('#type' => 'ajax', '#commands' => $commands);
    }
    
    my_js函数是我的ajax回调函数,我试图从中调用js代码中的test函数

    下面是我的JavaScript代码:

    (function ($) {
    
        Drupal.behaviors.contentevent = {
            attach: function (context) {
    
                //DEFAULT - hide all sponsor checkboxes
                $('fieldset#node_event_major__form_group_sponsors div.form-type-checkbox').hide();
    
                $items = Drupal.settings['content_event'];
                $($items).each( 
                    function($item){
                        Drupal.behaviors.showSponsor($item);
                    }
                ); //end each
    
                Drupal.behaviors.test = function() {
                    console.log('Testing ... Testing!!!');
                };
    
            }
        };
    
        Drupal.behaviors.showSponsor = function($index) {
            console.log('Test function responding: ' + $index);
            $('fieldset#node_event_major__form_group_sponsors div.form-type-checkbox input[value=' + Drupal.settings['content_event'][$index] +']').parent().show();
        };
    
    })(jQuery);
    

    不确定我在这里做错了什么。

    我认为问题在于
    ajax\u command\u invoke
    函数,它导致了以下情况:
    $('fieldset#node#event(重大)form(集团)赞助商div.form-type-checkbox')。test()

    如果要继续此方式(未测试),您的
    函数必须在“Drupal.behaviors”范围之外,或者尝试将第二个参数更改为
    ajax\u command\u invoke
    为“Drupal.behaviors.test”

    我建议选择第一种方法