1

ajax呼び出し内にjqueryが入力されたselecthtml要素があります。すべて正常に機能しているように見えますが、IE9では、選択ボックスにテキストの最初の文字が表示されているだけです。

動作を再現するdejsfiddleは次のとおりです。

http://jsfiddle.net/PjDfS/

ここで同じ質問が行われたことは承知しています。<select>には、選択したオプションの最初の文字しか表示されませんが、私の場合は解決策が機能しません。(http://jsfiddle.net/PjDfS/2/

どんな助けでも大歓迎です。

4

4 に答える 4

1

最後に、作業コード:

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

私は何をしましたか?最後に、古い投稿の回答に戻り、最初のアプローチを少し変更します。

より明確にするために、元の選択を「display:none」のままにし、最後に属性を削除します。

于 2012-08-21T21:42:32.780 に答える
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

optionマークアップ内に1つ追加selectしてから、スクリプトで削除してください。

そのようなオプションのテキストはどういうわけか「水平方向のスペースを割り当てている」ように見え、正しく表示されなくなったajaxが入力されたテキストを取得することはできません。

更新:試したばかりですが、もっと複雑です。元のオプションをそのままにしておくまでしか機能しません:(

于 2012-08-21T17:15:25.147 に答える
0

理由はわかりませんが、この方法でうまくいくようです。

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

また、コードが完全に同等であるかどうかもわかりません。とにかくこれまでのところ動作します...

于 2012-08-21T20:10:59.487 に答える