internet-explorer - 如何解决动态更改选项时 IE 选择问题

标签 internet-explorer angularjs html-select

我有一组选择,它们都具有相同的选项。然后,我通过过滤器运行这些选项,以便在不同选择中选择的任何选项都不会显示在选择中。请参阅this jsFiddle (在非 IE 浏览器中)看看我的意思。基本上,我防止在选择中多次选择同一选项

现在,我所做的在 IE 中出现了问题。在 IE 中打开那个 fiddle (我只在 IE9 中尝试过,但我猜以前的版本也有同样的问题)。将最后一个选择更改为 AAA。请注意其他 3 个选择如何更改了它们显示的内容。他们的模型没有改变,但当选项改变时,IE 不知怎的就卡住了。

我的问题是,首先,我是否对这个功能做错了什么?这段代码在 Chrome 和 FF 中完全符合我的要求,但我是否做了一些不应该做的事情?其次,如何在 IE 中解决这个问题?我尝试了一些超时来清除并重新设置模型,但明显的事情发生了变化。我想知道是否有一个好的、干净的、低影响的解决方法。

任何帮助将不胜感激。谢谢。

--更新--

这已经是fixed在 Angular 本身中 version 1.3.3使用A. S. Ranjan's solution以下。请参阅 1.3.3 的新 fiddle :http://jsfiddle.net/m2ytyapv/

//dummy code so I can post the edit

最佳答案

前几天晚上我遇到了同样的问题,在尝试了所有我能想到的方法后,我得出的结论是 IE 只是不想在使用选择时处理更新过滤器。

我的解决方案是将您的选择更改为如下所示:

 <select class="selectList" ng-repeat="currId in selectedIds" ng-model="selectedIds[$index]"  ng-options="currOption.id as currOption.value for currOption in myObj | myfilter:selectedIds:$index" data-ng-change="fixIE()"></select>

他们现在有一个类和一个 ng-change。然后在你的 Controller 中执行这段有趣的代码:

$scope.fixIE = function(){
    //code to check if IE so the other browsers don't get this ugly hack.
    var selectLists = document.querySelectorAll(".selectList");
    for(var x = 0;x  < selectLists.length; x++){
        selectLists[x].parentNode.insertBefore(selectLists[x], selectLists[x]);
    }       
};

它的作用是将元素从 DOM 中剥离出来并将它们替换到相同的位置。这是一个工作 fiddle jsFiddle

我尝试过的一些不涉及 JavaScript 的其他解决方案是诸如切换选择的显示/可见性之类的事情。他们的 zIndex 已移动。唯一能确定解决这个问题的是这段代码。

关于internet-explorer - 如何解决动态更改选项时 IE 选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12942681/

相关文章:

css - 为什么我的打印样式不能在 IE 7 和 IE 8 中呈现?

javascript - 一旦实例引用丢失,则编辑或删除BreezeJS EntityManager

angularjs - 如何使用AngularJS将树结构绑定(bind)到 Accordion 或列表(li)

javascript - Ruby on Rails 使用 OR 查找

internet-explorer - CSS 内阴影在 IE 中不起作用

html - IE9 输入/按钮元素边框颜色问题

java - struts2中select标签的list key属性如何指定多个值

javascript - 使用 jQuery 的索引获取 HTML 选择选项的值

apache - 使用 https (SSL) 的网站无法在 IE 和 Safari 中打开

javascript - 如何从 <table><tr><td></td></tr></table> 获取特定的 HTML 控件并将所选控件附加到同一个 <td> 中?