我为 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”。
怎么了?如何为节点表单中的复选框触发更改事件?
谢谢你的帮助!
托拜厄斯