不能通过";onchange";通过jQuery/JavaScript侦听复选框

不能通过";onchange";通过jQuery/JavaScript侦听复选框,javascript,jquery,html,drupal,checkbox,Javascript,Jquery,Html,Drupal,Checkbox,我正在用Drupal7编辑一个网站,并使用一个自定义JS文件向我用Webform模块创建的表单添加一些脚本功能 基本上,有一个复选框,如果选中,将防止用户在表单上填写冗余字段,如果一个部分的信息也适用于另一个部分 这是我的代码,现在我只是测试看看信息是否在函数之间传递 $(document).ready(function() { var checkbox = $("#edit-submitted-contact-information-pi-checkbox-1"); check

我正在用Drupal7编辑一个网站,并使用一个自定义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脚本添加到页面中(在我添加的
scripts[]=myjs.JS
文件中),并在之前链接了jQuery

在执行其他
alert()
测试时,我发现它正在从文档就绪处理程序中查找
check()
函数

我是否错过了什么/没有以某种方式做什么

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

找到了解决方案


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

您可以在IE8中使用
setAttribute
。下面是方法:好的,但是我必须使用
setAttribute
才能让它正常工作吗?