我为Drupal 7编写了一个小模块来检查是否有人正在更改复选框的状态(字段类型为“boolean”,名称为“field_calculate”)。
编辑表单中呈现的HTML标记为:
<input type="checkbox" class="form-checkbox" value="1" name="field_calculate[und]" id="edit-field-calculate-und">
要在表单中加载JavaScript / jQuery,我使用这个(工作)代码:
<?php function java_form_alter(&$form, $form_state, $form_id){
if($form_id == 'article_node_form'){
$form['field_calculate']['#after_build'] = array('_load_my_javascript');
}
}
function _load_my_javascript($element){
drupal_add_js( drupal_get_path('module', 'java') . '/java.js');
return($element);
} ?>
在每个“article_node_form”上加载脚本“java.js”。一切都很好。 脚本是
(function ($) {
alert("START");
$('input#edit-field-calculate-und').change(function() {
alert("KLICK");
});
})(jQuery);
加载页面/ node / add / article时,会出现警告“START”(表示:脚本正确加载)。
之后,页面内容出现。
点击/更改“计算”复选框时,没有任何反应。
我期待第二个警告“KLICK”出现。
怎么了? 如何在节点表单中为复选框触发更改事件?
感谢您的帮助!
托拜厄斯
答案 0 :(得分:0)
以下脚本的工作方式与预期相同:
jQuery(document).ready(function($) {
$('#edit-field-calculate-und').change(function() {
alert('Handler for .change() called.');
});
});