.remove () или поведение селектора в IE - PullRequest
3 голосов
/ 29 мая 2011
function updateSelector()
{
    //select all drop down list of field selector
    var fieldSelector = $("select:not(#project):not(#allNo):not(#availableNo)");
    var selected;
    //copy full option list from static drop down list to temp drop down list
    $("#availableNo").empty().append($("#allNo").clone());
    //remove any selected option from temp option
    fieldSelector.each(function() {
        $("#availableNo"+" option[value="+$(this).val()+"]").remove();
    });
    //copy temp option to all field selector
    fieldSelector.each(function() {
        //store selected option for current dropdown
        selected = $("option:selected", this);
        //clear list then append stored selected option
        $(this).empty().append(selected);
        //append temp option to current dropdown
        $(this).append($("#availableNo option").clone());
        //add blank option
        if($("option",this).length ==1)
            $(this).append("<option></option>");
    });
    //alert("..");
}

Приведенный выше код работает нормально, но в IE кажется, что он будет вести себя странно, если после него есть оператор (нет проблем, если после него нет нормативного документа, и проблема заключается только в IE).

Если я сообщу (в последней строке), выбранная опция переместится на 1 индекс.

Например, если есть 1-4, выбор 1 приведет к выбору 2; если выбрать 2, это будет 3.

Кто-нибудь знает, почему или чем это вызвано?

Я очень расстроен этим ..

1 Ответ

1 голос
/ 30 мая 2011

Этот случай такой же, как этот случай

решить, добавив "this.blur ();"оператор перед val ()

fieldSelector.each(function() {
   this.blur();
   $("#availableNo"+" option[value="+$(this).val()+"]").remove();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...