我有一个标准选择框,我通过附加选项使用 jquery 填充它,但由于某种原因 IE9 只显示所选选项的第一个字符。不用说它在FireFox和Chrome中完美运行,但我必须支持IE9。我尝试了 IE9 兼容模式,但没有任何区别,选择或选项的样式也没有。
以前有人见过这个问题吗?是什么原因造成的呢?你怎么修好它的?
简化的代码示例:
<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 显示属性设置为“none”,然后填充它,最后当 ajax 调用和填充完成时,我只需删除 css 显示“none”属性。
所以我仍然不知道为什么 IE 不喜欢我,但我们至少有一个解决方案。