2014-02-06 2 views
2

Я столкнулся со странной ошибкой в ​​IE9.Первый вариант в выпадающем списке показывает пробел в IE9

Вот выпадающий код:

<select> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
</select> 

Если я не упоминаю «выбрали» для первого варианта из выпадающего списка, он все равно получает выбран во всех других браузерах, кроме IE9. Даже он работает в IE8.

Это ошибка, или я должен упомянуть «выбранный» для первого варианта?

Может ли кто-нибудь мне помочь?

ответ

1

Плохо, что я ошибался. Я выбирал значения параметров для загрузки страницы на основе того, что пользователь выбрал ранее. Если пользователь ничего не выбрал, то в этом случае 'selectedVal' был пустым и, следовательно, вызывал проблемы.

Я изменил код, как показано ниже, и теперь все работает отлично.

var selectedVal = userselectedval || 1; 
$("select").val(selectedVal); 

Спасибо за все ваши быстрые ответы !!

1

Да, вы должны указать, как выбрать первый вариант. В противном случае он отобразит только опцию, но не выбранную.

1

Если IE 9 действительно ведет себя таким образом (у меня нет IE 9, и проблема не существует в IE 11 при использовании режима эмуляции IE 9), то это действительно странно, но технически это не ошибка. HTML 4,01 спецификация говорит о preselected options:

Если нет ВАРИАНТА элемента не установлен выбранный атрибут, агент пользователя поведения для выбора, какой вариант изначально выбран не определенно. Примечание. Так как существующие реализации обработки этого случая по-разному, текущая спецификация отличается от RFC 1866 (раздел [RFC1866] 8.1.3), который гласит, :

Исходное состояние выбрал первый вариант, если только выбранный атрибут не присутствует на любом из элементов.

Поскольку поведение пользовательского агента отличается, авторы должны убедиться, что каждое меню включает в себя предварительно выбранный ВАРИАНТ.

Это из года 1999 года, и браузеры обычно применяют принцип выбора первого варианта, если есть атрибут selected. Но по-прежнему безопаснее использовать атрибут selected.

Если вы не хотите любой варианта будет изначально выбрано, вставьте пустую опцию элемент в начале:

<select name=foo> 
    <option></option> 
    <option>1 
    <option>2 
    ... 
</select> 

на стороне клиента и на стороне сервера код для обработки должен проверить для того, чтобы значение было пустым и соответствующим образом обрабатывало ситуацию - это означает, что пользователь не сделал никакого выбора, и вы можете принять это или обработать его как условие ошибки.

Смежные вопросы