IE9 не печатает измененную опцию в выпадающем списке - PullRequest
2 голосов
/ 05 января 2012

В простом раскрывающемся окне в IE9, если пользователь изменяет выбор и затем пытается распечатать, печать отобразит исходную опцию.

Скажем, у меня есть

<option value="">Select one: </option>
<option value="1">Record 1</option>
<option value="2">Record 2</option>
<option value="3">Record 3</option>

По умолчанию при загрузке страницы в этом раскрывающемся списке отображается «Выберите один:».Если я выберу «Запись 2», а затем распечатаю страницу, «Коробка 2» будет напечатана внутри коробки вместо «Записи 2», которую я выбрал.Другие версии IE также могут делать эту работу.Но мы бы предпочли не использовать представление совместимости:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

Поскольку в этом случае, хотя выбранное значение правильно отображается внутри выпадающего списка, многие из наших стилей CSS будут потеряны.(например, border-radius)

У кого-нибудь есть хорошее решение?Спасибо.

1 Ответ

1 голос
/ 04 апреля 2012

Вот грубая функция, которая, кажется, делает свое дело, ее необходимо тщательно протестировать в вашей среде, но в настоящее время она выглядит нормально:

if ($.browser.msie && parseInt($.browser.version, 10) === 9) {
                $("select").change(function () {
                    var selectedOpt = $(this).find("option:selected");
                    var originalDefaultOption = $(this).find("option[selected]");
                    var text = originalDefaultOption.html();
                    var val = originalDefaultOption.val();

                    originalDefaultOption.after("<option value='" + val + "'>" + text + "</option>");
                    originalDefaultOption.remove();
                    selectedOpt.attr("selected", true);
                });
            }

По сути, IE не позволит вам удалитьатрибут selected = selected из опции, даже с JavaScript.Таким образом, я просто копирую исходную опцию по умолчанию в новый тег опции, не копируя атрибут «selected», и я помещаю атрибут «selected» во вновь выбранную опцию.Работает в FF и IE9 & 8.

...