Подтвердить что ты не робот

Добавьте пустую опцию вверху выбора и сделайте ее выбранной опцией в IE

HTML:

<select id="dropdown">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

JQuery

$("#dropdown").prepend("<option value='' selected='selected'></option>");

Когда я запускаю это в FireFox или Chrome, в раскрывающемся списке будет выбран новый выбранный пустой параметр. Когда я запускаю его в IE8, он по-прежнему выбирает Volvo. Любые идеи?

http://jsfiddle.net/YFu2h/

4b9b3361

Ответ 1

Измените это, и он будет работать:

$("#theSelectId").prepend("<option value=''></option>").val('');

http://jsfiddle.net/YFu2h/1/

Кажется, что IE оценивает только атрибут selected, когда он впервые встречает select.

Ответ 2

Я не уверен, почему ваш код не работает (возможно, он имеет какое-то отношение к тому, что в IE, selectedIndex - только для чтения), но это работает в IE:

$("#dropdown").prepend("<option value='' selected='selected'></option>");
$("#dropdown")[0].options[0].selected = true;

Ответ 3

Попробуйте:

$("#dropdown").prepend(new Option('', '', true, true));
$("#dropdown option:first").attr("selected", "selected");

Или, если вы предпочитаете:

$("#dropdown").prepend("<option value=''></option>");
$("#dropdown option:first").attr("selected", "selected");

Использование первого параметра происходит немного быстрее. Пустые кавычки означают пустое значение и пустой текст, поэтому заполняйте их по мере необходимости. Вы не нуждаетесь в выбранном атрибуте в preend, который мы добавляем позже. Это как-то связано с интернет-исследователем, не признающим, что он помечен как выбранный, поскольку он только что был создан.