Drupal 7的模块自定义JavaScript AJAX的函数调用
问题描述:
我想如下图所示一些JavaScript功能添加到一个节点编辑表单复选框的集合:Drupal 7的模块自定义JavaScript AJAX的函数调用
勾选每个方块/选中,我想让我的AJAX代码做出回应。我尝试了一些AJAX功能附加到复选框看起来就像图像显示工作,但这里有两个问题:
我收到以下错误遗漏的类型错误:无法读取属性未定义的“应用” --- ajax.js
如果我取消了同一个盒子,并重新检查,我的AJAX代码不回应(我承认,可能是因为上述错误的)
下面的代码是我的模块代码在那里我加入sponsors.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功能是从我试图打电话给测试功能在我的js代码我的AJAX回调函数。
这里是我的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_command_invoke
功能导致此: $('fieldset#node_event_major__form_group_sponsors div.form-type-checkbox').test();
你test
功能必须是外面的“Drupal.behaviors”范围或尝试将第二个参数更改为ajax_command_invoke
为“Drupal.behaviors.test”,如果你想继续这种方式(没有测试)。
我建议选择第一种方法。