Javascript-以编程方式触发任何浏览器的checkBox的onChange事件
Javascript - Programmatically trigger the onChange event of a checkBox for any browser
我在HTML中有一些复选框,设置如下:
<td nowrap width='25%'><label><input type='checkbox' name='chk[]' checked onChange="updateWindow('Label 1', this.checked)"> Label 1</label></td>
我还选中了所有/取消选中这些复选框的所有链接:
<td><a href="javascript:checkAll(0);">Unckeck all</a></td>
使用此代码:
function checkAll(checkValue) {
checkboxes = document.getElementsByName('chk[]');
for (var checkbox in checkboxes) {
checkbox.checked = checkValue;
activateEvent(checkbox, 'change');
}
}
开始的问题是,像这样选中/取消选中复选框不会触发onChange
事件和关联的方法。所以我手动触发它调用:
function activateEvent(item, actionShortName) {
if (document.createEventObject){ // dispatch for IE
item.fireEvent("on" + actionShortName);
}
else { // dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(actionShortName, true, true); // event type,bubbling,cancelable
item.dispatchEvent(evt);
}
}
这适用于IE8和一些旧版本的Firefox。但是在firefox23上,我有一个javascript错误告诉我:
"TypeError: item.dispatchEvent is not a function"
如何使此功能适用于所有浏览器
您的for
循环错误。checkboxes
将是一个NodeList,您不能通过它来for(in)
(除非您对属性名称感兴趣)。
使用常规的for (var i = 0; i < checkboxes.length; ++i) checkboxes[i]...
循环。
相关文章:
- Onchange没有'不要显示或隐藏Div
- Javascript Select OnChange没有'不要第二次工作
- onChange不足以从Dojo组合框触发查询
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 如何使用javascript和PHP动态触发onChange事件
- react testUtils模拟点击单选按钮而不触发onchange
- onChange 函数更改表中显示的数据
- Javascript onchange()函数不起作用
- 根据CHECKBOX输入值动态更新DIV信息
- 在表单OnChange中交换数字顺序
- onchange值为select的重载页面
- 如何使用Jquery从Asp.netMVC中的CheckBox中获取选定的值
- Javascript:如何在onChange事件期间更改日期时间值
- Javascript-以编程方式触发任何浏览器的checkBox的onChange事件
- Javascript:checkbox onchange/onclick函数不起作用
- Javascript Checkbox(es) onclick/onchange
- checkbox onChange won't fire
- Checkbox's的onchange方法对jsf和javascript不起作用
- 函数未调用onChange of Checkbox
- Javascript checkbox onChange