Как изменить значение раскрывающихся списков на основе другого раскрывающегося списка с помощью javascript?

У меня есть три <select> раскрывающихся списка на моей веб-странице: Взрослый, Ребенок и Младенец (подумайте о сайте бронирования авиабилетов).

Как правило, в раскрывающемся списке Взрослый есть варианты с номерами от 1 до 9, в раскрывающемся списке Дочерний - с номерами от 0 до 8, а в раскрывающемся списке Младенец - с параметрами. пронумерованы 0-1. Если пользователь выбирает значение Взрослый 4, доступные числа в раскрывающемся списке Ребенок должны измениться, чтобы отразить 0-5 и Младенец раскрывающийся список должен измениться, чтобы отобразить 0-4.

Я пытаюсь добиться этого с помощью javascript, но все время застреваю. Мы рады предоставить дополнительную информацию, если это необходимо - просто дайте мне знать, что вам нужно увидеть.

Вот что у меня есть на данный момент:

function MyApp(sender) {
    var ListBox1Id = '<%= ddl1.ClientID %>';
    var ListBox2Id = '<%= ddl2.ClientID %>';
    var ListBox3Id = '<%= ddl3.ClientID %>';

    var selectedIndex = document.getElementById(ListBox1Id).selectedIndex;
    var ii = document.getElementById(ListBox1Id).options[selectedIndex].value;
    var count = document.getElementById(ListBox1Id).length;

    if (ii != 0) {
        for (var k = 0; k <= count - ii; k++) {
            document.getElementById(ListBox2Id).value = k;
        }
    }
}

Это функция, которую я вызываю для события onchange раскрывающегося списка Взрослый, и я написал сценарии для отображения значения раскрывающегося списка Ребенок на основе Взрослый выпадающий выбор.


person Thiri    schedule 28.12.2012    source источник
comment
Набор инструментов AJAX - CascadingDropDown   -  person Habib    schedule 28.12.2012
comment
@MilindAnantwar Сейчас я отправлю сюда свой код.,   -  person Thiri    schedule 28.12.2012
comment
Какую логику вы используете для изменения значений ddl? означает, что при выборе 4 для взрослого, почему дочерний ddl будет состоять из 0-5, а младенец - из 0-4 ??   -  person Avishek    schedule 28.12.2012
comment
@Avishek Если мы выберем 4 взрослых из DDL для взрослых, значение DDL для детей будет начинаться с 0 до 5. (0,1,2,3,4,5) Пожалуйста, посетите любой сайт бронирования AirTicket.   -  person Thiri    schedule 28.12.2012
comment
@Avishek пытался выяснить логику того, почему 0-5, и я тоже хотел бы знать, как мы можем решить, 0-5 (ребенок), если выбран 4 (взрослый), я имею в виду, что если я выберу 5, 6 или 7 в выпадающий список для взрослых?   -  person Pawan Nogariya    schedule 28.12.2012


Ответы (1)


var ListBox1Id = '<%= ddl1.ClientID %>';
var ListBox2Id = '<%= ddl2.ClientID %>';
var ListBox3Id = '<%= ddl3.ClientID %>';

var count = $("#"+ListBox1Id+"option:selected").text();
var listbox2 = document.getElementById(ListBox2Id);

listbox2.empty();
for(var i=0; i++; i <= count){
listbox2.append(
    $('<option></option>').val(i).html(i)
);
}
var listbox3 = document.getElementById(ListBox3Id);

listbox3.empty();
for(var j=0; j++; j < count){
listbox3.append(
    $('<option></option>').val(j).html(j)
);
}

Измените свой код в соответствии с этим, измените логику подсчета, если требуется, и все будет хорошо ... Надеюсь, это поможет :)

person Avishek    schedule 28.12.2012
comment
Я изменил строку, чтобы получить счетчик var. Пожалуйста, проверьте. - person Avishek; 28.12.2012
comment
@Thiri: Вы это еще не проверили? - person Avishek; 01.01.2013