我有一个标准的下拉选择框,使用jQuery添加选项。但是在IE9中,只显示所选选项的第一个字符。显然,在FireFox和Chrome中它运作正常,但我必须支持IE9。我尝试了IE9兼容模式,但没有任何改善,对select或option应用样式也没有效果。
有人遇到过这个问题吗?是什么导致的?你是如何解决的?
简化的代码示例:
<select id="selectCCY" ValueColumn="ccyID" DisplayColumn="ccySymbol" ></select>
$.each(res.result, function (key, value) {
$('#selectCCY').append('<option value="' + value[$('#selectCCY').attr('ValueColumn')]+ '">' + value[$('#selectCCY').attr('DisplayColumn')] + '</option>');
});
res.result 是一个简单的 JSON 数组,格式如下:
[{"ccyID":1,"ccySymbol":"GBP"},{"ccyID":2,"ccySymbol":"AUD"},{"ccyID":3,"ccySymbol":"USD"}]
糟糕!在我简化的示例中它可以正常工作,问题一定出在其他地方。抱歉。原始代码太长太复杂了,无法粘贴到这里,但是我找到答案后会让你知道。
之后一段时间...
好了,我将问题缩小到了$(selector).each()循环内部的ajax调用上。该循环遍历所有选择框并异步填充选项。如果我将其更改为同步调用,则选择框的宽度和显示都正确,但如果是异步调用,则选择框仅显示第一个字符,如图所示。我还在努力解决这个问题,稍后再回复你。
我仍然想知道是什么原因导致选择框显示不正确。我可以采用解决方法来获得正确的显示效果,但这并不能回答我的问题。它只是一个带有选项的选择框,它应该总是能正常工作,对吗?
经过一个周末的忽略这个问题之后...
好了,我找到了一个解决方法。在进行ajax调用以填充选择框之前,我首先将其css display属性设置为“none”,然后填充它,最后当ajax调用和填充完成时,我只需删除css display 'none'属性即可。
所以我仍然不知道为什么IE不喜欢我,但至少我们有了一个解决方案。