内の値とドロップダウンリストのオプションを更新するために、私は2つのドロップダウンボックスでWebフォームを持っている、と私は動的に基づいて、第2のボックスのオプションを更新する方法を探しています最初のものから選択します。どのように動的にサーバー生成配列
最初のボックスには、データの種類を表し、2番目のボックスは、選択されたタイプに関連付けられているデータベースのリストです。
私はここにスムーズに実行している基本的なコードを持っている:
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);
}
}
}
コード(選択は、データ型ボックスで行われるたびにアクティブ化)がオプションの既存のリストをクリアし、の選択した値に基づいてリストを再移入ことを「dataFormatType」ボックス。
私は、データベーステーブルの実際のリストは、ハードコーディングされていない、代わりにページの新しいデータベースが追加されるたびに繰り返し編集を避けるために、サーバーに以下の呼び出しで生成されることです直面している問題:
をこれらの呼び出しは、次のコードを返すvar TypeA_dbSuffixList = ${TypeA_dbSuffixList};
var TypeB_dbSuffixList = ${TypeB_dbSuffixList};
:上記のコードでは
var TypeA_dbSuffixList = [Test1, Test2, Test3];
var TypeB_dbSuffixList = [TestA, TestB, TestC];
を、初期関数は、未定義の変数として型の配列の各エントリを扱い、何も今までに、ドロップダウンリストに書き込まれません。
私は前にタイプAのためのループ「のために」、そしてデータ型のドロップダウンリストから、タイプAを選択すると、「アップル」、「オレンジ」、および「ぶどう」として返すに
var Test1 = "Apple";
var Test2 = "Orange";
var Test3 = "Grape";
を追加した場合TypeAの利用可能なデータベース
視覚的に、私は変更する必要があるものを参照してください。 [Test1を、Test2を、Test3は]戻っは、[ 'Test1の'、 'Test2を'、 'Test3は']にする必要があります。私はちょうどそれを変える方法について正確にわかりません、私が考えることができるすべてのウェブ検索を使い果たしました。
返される配列の形式を変更し、または既存のフォーマットを使用して、ドロップダウン選択として変数名を渡す代わりに変数の値を使用するいずれかの方法はありますか?
ご協力いただきまして誠にありがとうございます。私は自分自身で答えを探し続けるつもりですが、見つけたらここに投稿します。
サーバーサイドのコードを変更するだけでは問題にはなりませんが、そのコードはアプリケーションの他の部分で使用されるハッシュセットを生成します(フォーマットの原因であるかどうかは完全にはわかりません)。私は文字列配列を返す別のメソッドを追加することができると思うが、私は既に存在するコードを大文字にすることを望んでいた。これはかなりうまくいく。ありがとうございました。 – Mike