ajax呼び出し内にjqueryが入力されたselecthtml要素があります。すべて正常に機能しているように見えますが、IE9では、選択ボックスにテキストの最初の文字が表示されているだけです。
動作を再現するdejsfiddleは次のとおりです。
ここで同じ質問が行われたことは承知しています。<select>には、選択したオプションの最初の文字しか表示されませんが、私の場合は解決策が機能しません。(http://jsfiddle.net/PjDfS/2/)
どんな助けでも大歓迎です。
ajax呼び出し内にjqueryが入力されたselecthtml要素があります。すべて正常に機能しているように見えますが、IE9では、選択ボックスにテキストの最初の文字が表示されているだけです。
動作を再現するdejsfiddleは次のとおりです。
ここで同じ質問が行われたことは承知しています。<select>には、選択したオプションの最初の文字しか表示されませんが、私の場合は解決策が機能しません。(http://jsfiddle.net/PjDfS/2/)
どんな助けでも大歓迎です。
最後に、作業コード:
私は何をしましたか?最後に、古い投稿の回答に戻り、最初のアプローチを少し変更します。
より明確にするために、元の選択を「display:none」のままにし、最後に属性を削除します。
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
})
);
});
});
});
option
マークアップ内に1つ追加select
してから、スクリプトで削除してください。
そのようなオプションのテキストはどういうわけか「水平方向のスペースを割り当てている」ように見え、正しく表示されなくなったajaxが入力されたテキストを取得することはできません。
更新:試したばかりですが、もっと複雑です。元のオプションをそのままにしておくまでしか機能しません:(
理由はわかりませんが、この方法でうまくいくようです。
また、コードが完全に同等であるかどうかもわかりません。とにかくこれまでのところ動作します...