1

我有一个在 ajax 调用中填充了 jquery 的 select html 元素。一切似乎都很好,但在 IE9 中,选择框只显示文本的第一个字符。

这是重现行为的de jsfiddle:

http://jsfiddle.net/PjDfS/

我知道这里问了同样的问题<select> 只显示所选选项的第一个字符,但该解决方案在我的情况下不起作用。( http://jsfiddle.net/PjDfS/2/ )

任何帮助都感激不尽。

4

4 回答 4

1

最后,工作代码:

http://jsfiddle.net/PjDfS/5/

我做了什么?最后,我回到旧的帖子答案并稍微改变我的第一种方法。

为了更清楚,将原始选择保留为“显示:无”,最后删除该属性。

于 2012-08-21T21:42:32.780 回答
0

我不知道为什么,但这种方式似乎有效:

http://jsfiddle.net/PjDfS/4/

另外,我不确定代码是否完全等效。无论如何它到目前为止工作......

于 2012-08-21T20:10:59.487 回答
0

我认为IE9的问题在于

var messageFieldInput = $('#MessageFieldInputTemplate > .messageField-input').clone()

这里 :

var testObj = [];
testObj[0] = {
    text: 'description 1',
    value: 'value 1'
};
testObj[1] = {
    text: 'description 2',
    value: 'value 2'
};

$.get('/echo/json', function (data) {
    var messageFieldInput = $('#MessageFieldInputTemplate > .messageField-input'); //no .clone()
    $('#MessageFieldContainer').append(messageFieldInput);
    messageFieldInput.find('.editor-label').text('Label');

    $.get('/echo/json', function (data) {
        var fieldSelect = messageFieldInput.find('.editor-field > select');            

        $.each(testObj , function (index, item) {
            fieldSelect.append(
                $('<option/>', {
                    'value':item.value,
                    'text':item.text
})
            );
        });
    });
});
于 2012-08-21T17:15:12.370 回答
0

尝试在标记内添加一个optionselect然后使用脚本将其删除。

看起来这样一个选项的文本以某种方式“分配”了水平空间,并且您将无法获得不再正确显示的 ajax 填充文本。

更新:刚刚尝试过,但它更复杂.. 仅在您保留原始选项之前有效:(

于 2012-08-21T17:15:25.147 回答