Html Dropdownlist построен с JQuery не работает правильно

0

У меня есть следующий код для динамического создания раскрывающегося списка в браузере IE10, в зависимости от значений, полученных из базы данных

function buildOption(container, namepreface, id, val, txt) {
    var obj = $("<option />", { id : namepreface + id, value : val, text : txt});
    $("#"+ container).append(obj);
    return obj;
}

вот html, который он сгенерировал, который я скопировал из F12, DOM Explorer

<li>
    <span class="div120RAlgn inlineblock">
        <label for="CostCenter">Cost Center:</label>
    </span>
    <span class="editor-field-alLw220">
        <select id="CostCenter">
            <option id="costcenter_0" value="0"> </option>
            <option id="costcenter_3" value="3">All</option>
        </select>
    </span>
</li>

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

Изображение 174551

Когда я снова нажимаю на него, он выглядит так, как должен

Изображение 174551

У кого-нибудь есть идеи относительно того, что происходит и как это исправить? Эта проблема является последовательной независимо от того, что значения и независимо от количества опций в списке

Этот сегмент находится в функции готовности документа

$("#Region").change(function (e) {
    loadRegionLocations(e.currentTarget);
});
$("#Location").change(function (e) {
    loadLocationsCostCenters(e.currentTarget);
});

И это два метода, называемые

function loadRegionLocations(tar) {
    $("#CostCenter").empty();
    $("#Location").empty();
    buildOption("Location", "location_", 0, 0, ' ');
    var selloc = searchArgsForObjLst($(tar).val(), "REGIONID", "LOCATIONNAME", locationlst);
    $.each(selloc, function (i, o) {
        var c = buildOption("Location", "location_", o.LOCATIONID, o.LOCATIONID, o.LOCATIONNAME);
        c.data("REGIONID", o.REGIONID);
    });
}


function loadLocationsCostCenters(tar) {
    $("#CostCenter").empty();
    buildOption("CostCenter", "costcenter_", 0, 0, ' ');
    var selcc = searchArgsForObjLst($(tar).val(), "LOCATIONID", "COSTCENTERNAME", costcenterlst);
    $.each(selcc, function (i, o) {
        var c = buildOption("CostCenter", "costcenter_", o.COSTCENTERID, o.COSTCENTERID, o.COSTCENTERNAME);
        c.data("REGIONID", o.REGIONID);
        c.data("LOCATIONID", o.LOCATIONID);
    });
}
  • 2
    Вы можете опубликовать выпадающий код события клика? Будет полезнее проверить, что пошло не так?
  • 1
    скрипка была бы еще лучше :)
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Возможно, я нашел решение этой проблемы. По крайней мере, я добавил код ниже, и пока он работает.

$.fn.redraw = function () {
$(this).each(function () {
    var redraw = this.offsetHeight;
});

};

Затем в методах, где я создаю параметры, я добавил вызов этого метода, например

    function loadLocationsCostCenters(tar) {
    $("#CostCenter").empty();
    buildOption("CostCenter", "costcenter_", 0, 0, ' ');
    var selcc = searchArgsForObjLst($(tar).val(), "LOCATIONID", "COSTCENTERNAME", costcenterlst);
    $.each(selcc, function (i, o) {
        var c = buildOption("CostCenter", "costcenter_", o.COSTCENTERID, o.COSTCENTERID, o.COSTCENTERNAME);
        c.data("REGIONID", o.REGIONID);
        c.data("LOCATIONID", o.LOCATIONID);
    });
    **$("#CostCenter").redraw();**
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню