Jquery Chosen обновляет каскадный выбор на шаг позади собственных полей выбора

Я использую jquery, выбранный в 4 полях выбора, которые заполняются через базу данных.

Идентификаторы полей выбора: #Year_395, #Make_395, #Model_395, #Trim_395.

Я использую следующий сценарий, чтобы «каскадировать» их, чтобы параметры второго поля выбора зависели от того, какой параметр был выбран в первом, параметры для третьего зависят от второго выбора и т. д.

function cascadeSelect(parent, child){
    var childOptions = child.find('option:not(.static)');
    child.data('options',childOptions);

    parent.change(function(){
        var parentValue = (this.value).replace(" ", "_");
        childOptions.remove();
        child
             .append(child.data('options').filter('.sub_' + parentValue))
             .change();
    })

    childOptions.not('.static, .sub_' + parent.val()).remove();
}

Собственные поля выбора правильно каскадируются. Проблема в том, что когда я реализую jQuery Chosen, новые поля выбора обновляются, но делают это на один шаг позади собственных полей. На данный момент я использую приведенный ниже код для обновления параметров отображения окна выбора замены jQuery Chosen. Это должно привести к тому, что jQuery Chosen обновит #Trim_395, как только будет выбран параметр для #Model_395.

$("#Model_395").chosen().change(function(){
    $("#Trim_395").trigger('chosen:updated');
});

Вот ссылка на сайт сборки:

Вы увидите, что если вы выберете свой год, марку и модель, варианты отделки салона будут недоступны, как будто вам еще предстоит выбрать модель. Если затем выбрать другую модель, отобразятся параметры первой выбранной модели. При выборе третьей модели отобразятся параметры отделки для второй и т. д.


person Community    schedule 10.03.2014    source источник


Ответы (1)


Я понял это самостоятельно. jQuery Chosen обновлялся до того, как скрытые поля выбора успели обновиться, поэтому:

 $("#Model_395").change(function(){
 wto = setTimeout(function() {
     $("#Trim_395").trigger('chosen:updated');
}, 500);
 });

Решил проблему. Спасибо всем, кто заглянул :)

person Community    schedule 10.03.2014