добавление опций для выбора в фокусе IE9 - PullRequest
1 голос
/ 24 января 2012

Я пытаюсь лениво загрузить параметры в выборку с помощью jquery. Этот код работает во всех браузерах, которые я тестировал, кроме IE9. (IE7, IE8, FF, Chrome все работают)

function LazyLoadOptionsIntoSelect($select, options) {
        //get current option
        var selectedOptionVal = $select.val();
        var selectedOptionDisplay = $select.find("option:selected").text();

        //repopulate options
        if (selectedOptionDisplay === "--Select a File--"
                || selectedOptionDisplay === "----------") {
            $select.html("");

            $("<option>").val("").text("--Select a File--")
                        .appendTo($select);
        }
        else {
            $select.html($("option:selected", $select));
            $("<option>").val("").text("----------")
                        .appendTo($select);
        }
        $.each(options, function () {
            var item = this;
            $("<option>").attr("name", function () { return item.display; })
                    .val(item.value)
                    .text(item.display)
                    .appendTo($select);
        });

        //select previous val
        $select.val(selectedOptionVal);
    }

    $(document).on("focus", ".html-select", function () {
        LazyLoadOptionsIntoSelect($(this), HtmlOptions);
    });
    $(document).on("focus", ".txt-select", function () {
        LazyLoadOptionsIntoSelect($(this), TxtOptions);
    });
    $(document).on("focus", ".xml-select", function () {
        LazyLoadOptionsIntoSelect($(this), XmlOptions);
    });

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

options - это массив объектов, содержащих значение и отображение.

Это работает в более простых случаях использования, но, по-видимому, это слишком много для Microsoft. <_ <</p>

1 Ответ

1 голос
/ 24 января 2012

После нескольких часов возни я попытался изменить css, чтобы увидеть, работает ли перерисовка элемента.Это сделал.

$(document).on("focus", ".html-select", function () {
        LazyLoadOptionsIntoSelect($(this), HtmlOptions);
        if ( $("body").hasClass("ie9") )
        {
            $(this).width($(this).width());
        }
    });
...