JavaScript selectAlldescelectAll复选框函数没有'我不在IE8上工作
JavaScript selectAlldeselectAll checkboxes function doesn't work on IE8
我有一个为Alfresco应用程序开发的Webscript(.js文件)。它处理一个按钮,该按钮显示一个表格,旨在选择订阅了Alfresco空间的成员,以便向他们发送邮件
所有复选框都是使用订阅者名称动态生成的
您可以选中任何想要的成员,还可以使用一个特殊的复选框来选择或取消选择所有成员
这个特定的复选框在Chrome和Firefox上正常工作
但是,当您在Internet Explorer 8上检查时,无论是否检查成员的名称,都不会选择或取消选择任何成员
以下是表单生成和选中复选框时触发的onClick函数的代码示例:
updateMembersList : function TS_updateMembersList(containerId)
{
var div = Dom.get(containerId);
div.innerHTML = "<div class='"memberDiv'">" +
"<input type='"checkbox'" id='"selectDeselectAllCb'" checked='"true'" onchange='"YAHOO.Bubbling.fire('selectDeselectAllChanged')'" class='"memberCb'"/>" +
"<label for='"selectDeselectAllCb'" class='"memberLabel'">" +
this.msg('label.selectDeselectAll') + "</label>" +
"</div>";
for (var i=0; i<this.members.length; i++)
{
var member = this.members[i];
var avatar = Alfresco.constants.URL_CONTEXT + "/components/images/no-user-photo-64.png";
if (member.authority.avatar && member.avatar != "")
{
avatar = Alfresco.constants.PROXY_URI + member.authority.avatar + "?c=force";
}
div.innerHTML += "<div class='"memberDiv'">" +
"<input type='"checkbox'" id='"cb_" + member.authority.userName + "'" checked='"true'" onchange='"YAHOO.Bubbling.fire('selectDeselectMemberChanged')'" class='"memberCb'"/>" +
"<label for='"cb_" + member.authority.userName + "'" class='"memberLabel'">" +
member.authority.firstName + " " + member.authority.lastName + "</label>" +
"</div>";
}
},
selectDeselectAllChanged: function selectDeselectAllChanged(){
var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
var checked = selectDeselectAllCb.checked;
console.log("Select All");
var cbs = YAHOO.util.Selector.query("input[id^='cb_']");
for (var i=0, j=cbs.length; i<j; i++)
{
var cb = cbs[i];
cb.checked = checked;
}
},
selectDeselectMemberChanged: function selectDeselectMemberChanged(){
var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
var cbs = YAHOO.util.Selector.query("input[id^='cb_']");
var firstChecked;
if (cbs[0] != null){
firstChecked = cbs[0].checked;
}
for (var i=0, j=cbs.length; i<j; i++)
{
var cb = cbs[i];
if (cb.checked === firstChecked){
continue;
}
else{
selectDeselectAllCb.checked = false;
return;
}
}
selectDeselectAllCb.checked = firstChecked;
},
一开始,我认为IE8不支持该查询,但事实并非如此
IE7和更新版本支持这种语法。
尝试删除console.log("Select All");
并将其替换为Alfresco.logger.debug("全选");IE不喜欢控制台对象。
此外,在jslint上运行您的代码——如果您在某个地方有一个无效的json,IE就会停止。
另外,试着在开发者模式下运行IE——设置它以显示脚本错误,你就会知道它在哪里停止。
我已经解决了这个问题。我已经用onclick
事件处理程序替换了onchange
事件处理程序。事实上,onchange在InternetExplorer上具有随机行为,而onclick
在大多数情况下工作良好。谢谢你的帮助。
相关文章:
- IE8更改文本区域上的事件侦听器不工作
- window.onbeforeunload在IE8中不触发(在Firefox,Chrome和Safari中工作正常)
- $('body').on('blur')在IE8中工作不好
- window.location重定向没有'我不在IE8上工作
- addEventListener没有'不能在IE中工作(在IE8中测试)
- Requirejs和主干应用程序,不能在IE8中工作
- 无法在 IE 9 中传递此运算符的值,而它在 IE7 和 IE8 中工作正常
- Request.UrlReferrer在IE8中无法正常工作,并且工作正常IE9
- 不触发 OnClick 事件 IE8,但在 Firefox 中工作正常
- 如何优化我的jQuery以始终在IE8中工作,目前它被击中和错过
- 获取尾随逗号(在JavaScript中)在IE7 / IE8中工作
- FormData ajax 上传 IE8 -> 替代品及其工作原理
- jquery设置隐藏的输入值在IE7和IE8中未按预期工作
- 代码不'我不在IE8工作
- IE7中没有填充mootools中的动态下拉列表.IE8工作良好
- 梅森不在IE8工作
- Youtube iframe API调用以播放视频/pauseVideo don'我不在IE8工作
- 映射/设置与ie8工作的实现
- window.attachEvent没有'我似乎在IE8工作
- Fancybox Overlay Helper'我不在IE8工作