0

我为 Drupal 7 编写了一个小模块来检查是否有人正在更改复选框的状态(字段类型为“布尔”,名称为“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”。

怎么了?如何为节点表单中的复选框触发更改事件?

谢谢你的帮助!
托拜厄斯

4

1 回答 1

0

以下脚本按预期工作:

jQuery(document).ready(function($) {

$('#edit-field-calculate-und').change(function() {
alert('Handler for .change() called.');
});

});
于 2012-09-15T07:16:06.630 回答