Я использую 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');
});
Вот ссылка на сайт сборки:
Вы увидите, что если вы выберете свой год, марку и модель, варианты отделки салона будут недоступны, как будто вам еще предстоит выбрать модель. Если затем выбрать другую модель, отобразятся параметры первой выбранной модели. При выборе третьей модели отобразятся параметры отделки для второй и т. д.