无法通过" onchange"通过jQuery / JavaScript监听一个复选框

时间:2014-07-25 17:23:47

标签: javascript jquery html drupal checkbox

我正在编辑Drupal 7中的一个网站,并使用自定义JS文件为我使用Webform模块创建的表单添加一些脚本功能。

基本上,有一个复选框,如果选中,则会阻止用户填写表单上的冗余字段,如果一个部分的信息也适用于其他部分。

这是我的代码,现在我只是测试是否在函数之间传递信息。

$(document).ready(function() {
    var checkbox = $("#edit-submitted-contact-information-pi-checkbox-1");
    checkbox.onchange = "checkPI(this);";
});

function checkPI(x) {
    if(x.checked) alert("Checkbox is checked");
    else alert("Checkbox is unchecked.");
}

但是,当我单击复选框时,没有任何反应。我仔细检查了一下,Drupal将JS脚本添加到页面中(在我添加.info的{​​{1}}文件中,并在此之前链接了jQuery。

在进行其他scripts[] = myjs.js测试后,我发现它正在从文档就绪处理程序中找到alert()函数。

我错过了某些东西/没有以某种方式做某事吗?

另请注意:我必须确保此网站在IE 8中有效,因此我无法使用check()方法添加setAttribute()侦听器。

1 个答案:

答案 0 :(得分:0)

找到解决方案......

问题是jQuery将checkbox元素视为[object Object]而不是[object HTMLInputElement]。因此,为了避免麻烦,我只使用普通的旧JavaScript来分配函数和监听器,现在一切正常。