У меня есть веб-форма с двумя раскрывающимися списками, и я ищу способ динамически обновлять параметры второго поля на основе выбора из первого.
Первое поле представляет собойтип данных, а второе поле - это список баз данных, связанных с выбранным типом.
У меня базовый код работает без сбоев:
var TypeA_DbSuffixList = ['Test1', 'Test2', 'Test3'];
var TypeB_DbSuffixList = ['TestA', 'TestB', 'TestC'];
function fill_dbSuffixList(){
document.getElementById("dbSuffixList").options.length = 0;
var suffixMenu = document.getElementById("dbSuffixList");
var dataFormat = document.getElementById("dataFormatType");
var suffixList = dataFormat.value + "dbSuffixList";
if (suffixList == 'TypeA_dbSuffixList') {
for(index in TypeA_dbSuffixList) {
suffixMenu.options[suffixMenu.options.length] = new Option(TypeA_dbSuffixList[index], index);
}
}
if (suffixList == 'TypeB_dbSuffixList') {
for(index in TypeB_dbSuffixList) {
suffixMenu.options[suffixMenu.options.length] = new Option(TypeB_dbSuffixList[index], index);
}
}
}
Этот код (активируется всякий раз, когда выборсделано в поле dataType) очищает существующий список параметров и заново заполняет список на основе выбранного значения поля «dataFormatType».
Проблема, с которой я сталкиваюсь, заключается в том, что фактические списки таблиц базы данных не сложнызакодированы и вместо этого генерируются с помощью следующих обращений к серверу, чтобы избежать повторного редактирования страницы при каждом добавлении новой базы данных:
var TypeA_dbSuffixList = ${TypeA_dbSuffixList};
var TypeB_dbSuffixList = ${TypeB_dbSuffixList};
Эти вызовы возвращают следующий код:
var TypeA_dbSuffixList = [Test1, Test2, Test3];
var TypeB_dbSuffixList = [TestA, TestB, TestC];
С помощью приведенного выше кода начальная функция обрабатывает каждую запись в массивах типов как неопределенную переменную, и ничего не пишетсяitten к раскрывающемуся списку.
Если бы я должен был добавить
var Test1 = "Apple";
var Test2 = "Orange";
var Test3 = "Grape";
перед циклом "for" для TypeA, тогда выбор TypeA из раскрывающегося списка dataType возвращает "Apple "," Orange "и" Grape "в качестве доступных баз данных для TypeA.
Визуально я вижу, что нужно изменить.Возвращаемые значения [Test1, Test2, Test3] должны быть ['Test1', 'Test2', 'Test3'].Я просто не уверен, как именно его изменить, и исчерпал каждый веб-поиск, о котором я могу подумать.
Есть ли способ изменить формат возвращаемых массивов или использовать существующий формат ипередавать имена переменных как выпадающие списки вместо использования значений переменных?
Любая помощь очень ценится.Я также продолжу искать ответ самостоятельно и опубликую его здесь, если найду.