【发布时间】:2011-08-19 23:48:47
【问题描述】:
我有一个标准选择框,我使用 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 显示属性设置为“无”,然后填充它,最后当 ajax 调用和填充完成时,我只需删除 css 显示“无”属性。
所以我还是不知道为什么IE不喜欢我,但我们至少有一个解决方案。
【问题讨论】:
-
sigh 您用来填充
select框的标记或代码是什么样的? -
为了完整性:你的 jQuery 代码是什么?
-
您可以使用jsfiddle.net 来设置您的代码演示。
-
“您可以使用 jsfiddle.net 来设置您的代码演示。” 但如果您这样做,请务必也发布代码实际上在你的问题中。不仅仅是指向jsfiddle.net(或jsbin.com)的链接。
-
你可以在 IE9 的异步调用之后尝试forcing a redraw of the UI。
标签: jquery html internet-explorer internet-explorer-9