Я пытаюсь иметь форму с двумя выпадающими вариантами выбора, которые заполняются из массивов. Первый выбор имеет только один массив, однако в зависимости от выбора я хочу заполнить второй конкретным многомерным массивом. Я могу сделать их индивидуально, но я не могу передать имя массива из первого выбора в функцию, чтобы заполнить вторую.jQuery динамически зависимый выбор из многомерного массива
Я довольно новичок в javascript и jQuery 1.11.0 и буду признателен за любую помощь.
Вот код, с которым я работаю.
select name="aircraftList" id="aircraftList" onchange="showAircraft(this.selectedIndex)"
select name="configWBList" id="configWBList"
// values for AIRCRAFT
// tnumber, acmodel, maxwt, f1arm, m1arm, r1arm, littarm, bag1max, fuel1kgmax,
///////////////////////////////////////////////////////////
var aircraft = [
["Select Aircraft", "", "", "", "", "", "", "", "", ""],
['N901AH', "Agusta A109E", 3000, 1585, 2455, 3200, 5300, 3200, 150, 480],
['N902AH', "Agusta A109E", 3000, 1585, 2455, 3200, 5300, 3200, 150, 480],
['N903AH', "Agusta A109E", 3000, 1585, 2455, 3200, 5300, 3200, 150, 480],
['N904AH', "Agusta A109E", 3000, 1585, 2455, 3200, 5300, 3200, 150, 480],
['N905AH', "Agusta A109E", 3000, 1585, 2455, 3200, 5300, 3200, 150, 480],
['N907AH', "Agusta A109E", 3000, 1585, 2455, 3200, 5300, 3200, 150, 480]
];
// values for AC N901AH
///////////////////////////////////////////////////////////
var N901AH = [
["Select a Configuration", "Select Config", "Select Config"],
["6 PAX STANDARD SEATS OFFSHORE", 2205.61, 3485.69],
["DUAL CONTROLS INSTALLED", 2207.81, 3483.76],
["VIP SEATS INSTALLED", 2212.11, 3483.75],
["VIP SEATS, DUAL CONTROLS INSTALLED", 2214.31, 3481.83],
["ONE LITTER KIT INSTALLED", 2213.91, 3483.50],
["ONE LITTER, DUAL CONTROLS INSTALLED", 2216.11, 3481.58],
["6 PAX STANDARD SEATS, VESTS REMOVED", 2196.81, 3489.83],
["VIP SEATS INSTALLED, VEST REMOVED", 2203.31, 3487.87],
["ONE LITTER INSTALLED, VESTS REMOVED", 2207.31, 3487.02],
["TWO LITTER INSTALLED", 2222.21, 3481.32],
["TWO LITTER, DUAL CONTROLS INSTALLED", 2224.41, 3479.41],
["VIP SEATS, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2205.51, 3485.93],
["ONE LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2209.51, 3485.09],
["TWO LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2220.01, 3482.33],
["FLOATS, RAFT, VESTS REMOVED", 2084.51, 3507.26]
];
// values for AC N902AH
///////////////////////////////////////////////////////////
var N902AH = [
["Select a Configuration", "Select Config", "Select Config"],
["6 PAX STANDARD SEATS OFFSHORE", 2205.61, 3485.69],
["DUAL CONTROLS INSTALLED", 2207.81, 3483.76],
["VIP SEATS INSTALLED", 2212.11, 3483.75],
["VIP SEATS, DUAL CONTROLS INSTALLED", 2214.31, 3481.83],
["ONE LITTER KIT INSTALLED", 2213.91, 3483.50],
["ONE LITTER, DUAL CONTROLS INSTALLED", 2216.11, 3481.58],
["6 PAX STANDARD SEATS, VESTS REMOVED", 2196.81, 3489.83],
["VIP SEATS INSTALLED, VEST REMOVED", 2203.31, 3487.87],
["ONE LITTER INSTALLED, VESTS REMOVED", 2207.31, 3487.02],
["TWO LITTER INSTALLED", 2222.21, 3481.32],
["TWO LITTER, DUAL CONTROLS INSTALLED", 2224.41, 3479.41],
["VIP SEATS, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2205.51, 3485.93],
["ONE LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2209.51, 3485.09],
["TWO LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2220.01, 3482.33],
["FLOATS, RAFT, VESTS REMOVED", 2084.51, 3507.26]
];
// values for AC N903AH
///////////////////////////////////////////////////////////
var N903AH = [
["Select a Configuration", "Select Config", "Select Config"],
["6 PAX STANDARD SEATS OFFSHORE", 2205.61, 3485.69],
["DUAL CONTROLS INSTALLED", 2207.81, 3483.76],
["VIP SEATS INSTALLED", 2212.11, 3483.75],
["VIP SEATS, DUAL CONTROLS INSTALLED", 2214.31, 3481.83],
["ONE LITTER KIT INSTALLED", 2213.91, 3483.50],
["ONE LITTER, DUAL CONTROLS INSTALLED", 2216.11, 3481.58],
["6 PAX STANDARD SEATS, VESTS REMOVED", 2196.81, 3489.83],
["VIP SEATS INSTALLED, VEST REMOVED", 2203.31, 3487.87],
["ONE LITTER INSTALLED, VESTS REMOVED", 2207.31, 3487.02],
["TWO LITTER INSTALLED", 2222.21, 3481.32],
["TWO LITTER, DUAL CONTROLS INSTALLED", 2224.41, 3479.41],
["VIP SEATS, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2205.51, 3485.93],
["ONE LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2209.51, 3485.09],
["TWO LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2220.01, 3482.33],
["FLOATS, RAFT, VESTS REMOVED", 2084.51, 3507.26]
];
// values for AC N904AH
///////////////////////////////////////////////////////////
var N904AH = [
["Select a Configuration", "Select Config", "Select Config"],
["6 PAX STANDARD SEATS OFFSHORE", 2205.61, 3485.69],
["DUAL CONTROLS INSTALLED", 2207.81, 3483.76],
["VIP SEATS INSTALLED", 2212.11, 3483.75],
["VIP SEATS, DUAL CONTROLS INSTALLED", 2214.31, 3481.83],
["ONE LITTER KIT INSTALLED", 2213.91, 3483.50],
["ONE LITTER, DUAL CONTROLS INSTALLED", 2216.11, 3481.58],
["6 PAX STANDARD SEATS, VESTS REMOVED", 2196.81, 3489.83],
["VIP SEATS INSTALLED, VEST REMOVED", 2203.31, 3487.87],
["ONE LITTER INSTALLED, VESTS REMOVED", 2207.31, 3487.02],
["TWO LITTER INSTALLED", 2222.21, 3481.32],
["TWO LITTER, DUAL CONTROLS INSTALLED", 2224.41, 3479.41],
["VIP SEATS, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2205.51, 3485.93],
["ONE LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2209.51, 3485.09],
["TWO LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2220.01, 3482.33],
["FLOATS, RAFT, VESTS REMOVED", 2084.51, 3507.26]
];
// values for AC N905AH
///////////////////////////////////////////////////////////
var N905AH = [
["Select a Configuration", "Select Config", "Select Config"],
["6 PAX STANDARD SEATS OFFSHORE", 2205.61, 3485.69],
["DUAL CONTROLS INSTALLED", 2207.81, 3483.76],
["VIP SEATS INSTALLED", 2212.11, 3483.75],
["VIP SEATS, DUAL CONTROLS INSTALLED", 2214.31, 3481.83],
["ONE LITTER KIT INSTALLED", 2213.91, 3483.50],
["ONE LITTER, DUAL CONTROLS INSTALLED", 2216.11, 3481.58],
["6 PAX STANDARD SEATS, VESTS REMOVED", 2196.81, 3489.83],
["VIP SEATS INSTALLED, VEST REMOVED", 2203.31, 3487.87],
["ONE LITTER INSTALLED, VESTS REMOVED", 2207.31, 3487.02],
["TWO LITTER INSTALLED", 2222.21, 3481.32],
["TWO LITTER, DUAL CONTROLS INSTALLED", 2224.41, 3479.41],
["VIP SEATS, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2205.51, 3485.93],
["ONE LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2209.51, 3485.09],
["TWO LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2220.01, 3482.33],
["FLOATS, RAFT, VESTS REMOVED", 2084.51, 3507.26]
];
// values for AC N907AH
///////////////////////////////////////////////////////////
var N907AH = [
["Select a Configuration", "Select Config", "Select Config"],
["6 PAX STANDARD SEATS OFFSHORE", 2205.61, 3485.69],
["DUAL CONTROLS INSTALLED", 2207.81, 3483.76],
["VIP SEATS INSTALLED", 2212.11, 3483.75],
["VIP SEATS, DUAL CONTROLS INSTALLED", 2214.31, 3481.83],
["ONE LITTER KIT INSTALLED", 2213.91, 3483.50],
["ONE LITTER, DUAL CONTROLS INSTALLED", 2216.11, 3481.58],
["6 PAX STANDARD SEATS, VESTS REMOVED", 2196.81, 3489.83],
["VIP SEATS INSTALLED, VEST REMOVED", 2203.31, 3487.87],
["ONE LITTER INSTALLED, VESTS REMOVED", 2207.31, 3487.02],
["TWO LITTER INSTALLED", 2222.21, 3481.32],
["TWO LITTER, DUAL CONTROLS INSTALLED", 2224.41, 3479.41],
["VIP SEATS, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2205.51, 3485.93],
["ONE LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2209.51, 3485.09],
["TWO LITTER, DUAL CONTROLS INSTALLED, VESTS REMOVED", 2220.01, 3482.33],
["FLOATS, RAFT, VESTS REMOVED", 2084.51, 3507.26]
];
// set form values to selected aircraft option
///////////////////////////////////////////////////////////
function showAircraft(idx) {
var aircraftWB = [aircraft[idx][0]]
alert(aircraftWB);
$("#configWBList").html('');
list(aircraftWB);
}
function list(arrary) {
alert(arrary);
// populate selected aircraft w&b select
///////////////////////////////////////////////////////////
for (i = 0; i < arrary.length; i++) {
var select = document.getElementById("configWBList");
select.options[select.options.length] = new Option(arrary[i][0], arrary[i][1]);
}
// reset the selected aircraft configuration to standard
///////////////////////////////////////////////////////////
$("#configWBList").val($("#configWBList option:first").val());
$("#configWBList").selectmenu('refresh', true);
}
// initialise form
// ****************************************************
function initForm() {
// populate aircraft select
///////////////////////////////////////////////////////////
for (i = 0; i < aircraft.length; i++) {
var select = document.getElementById("aircraftList");
select.options[select.options.length] = new Option(aircraft[i][0], aircraft[i][1]);
}
}
initForm();
https://jsfiddle.net/g3h9p2ur/
Вы застряли в информации в этой форме или сами пишете эти массивы? Если вы можете их изменить, ассоциативные массивы могут быть лучшим выбором. – ntrrobng
Нет, я сам пишу эти массивы. Как я уже сказал, я очень новичок в jQuery (мой первый проект), и я не мог заставить ассоциативные массивы работать. – geno