不能通过";onchange";通过jQuery/JavaScript侦听复选框
我正在用Drupal7编辑一个网站,并使用一个自定义JS文件向我用Webform模块创建的表单添加一些脚本功能 基本上,有一个复选框,如果选中,将防止用户在表单上填写冗余字段,如果一个部分的信息也适用于另一个部分 这是我的代码,现在我只是测试看看信息是否在函数之间传递不能通过";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
$(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
才能让它正常工作吗?