0

別のドロップダウンに依存する値をドロップダウン リストに入力したい。つまり、最初のコントロールで項目を選択すると、2 番目のコントロールは対応する「サブ項目」をロードする必要があります。

これは私の JS コードです (HTML ヘッド内):

<script type="text/javascript">

var tipos = new Array("Tipo1", "Tipo2", "Tipo3");
var subtipos_aux = new Array();
subtipos_aux[0]="Esto no deberia aparecer";
subtipos_aux[1]="Subtipos para TIPO1|Subtipos para TIPO1";
subtipos_aux[2]="Subtipos para TIPO2|Subtipos para TIPO2";
subtipos_aux[3]="Subtipos para TIPO3|Subtipos para TIPO3|Subtipos para TIPO3";

function cargarTipos() {
    var lista = document.getElementById('__tipo');
    var x, i = 0;
    for(x in tipos){
        lista.options[i++] = new Option(tipos[x],tipos[x]);
    }
}

function cargarSubtipos(id_tipo) {
    var lista = document.getElementById('__subtipo');
    var x, i = 0; id_tipo++;
    var subtipos = subtipos_aux[id_tipo].split("|");
    for(x in subtipos) {
        lista.options[i++] = new Option(subtipos[x],subtipos[x]);
    }
}

そして、これが HTML 本文で関数を呼び出す方法です。

<fieldset>
  ...
  <select id="__tipo" name="__tipo" onchange="cargarSubtipos(this.selectedIndex);">
  ...
  <select id="__subtipo" name="__subtipo">
  ...
</fieldset>

<script language="javascript">cargarTipos("__tipo");</script>

メイン リストは完全に読み込まれ、そこからオプションを選択すると、サブタイプを読み取る関数が呼び出されます。ただし、セカンダリ リストには何も表示されません。私はどこにでもアラートを配置し、次のことに気付きました。

  1. selectedIndex の読み取り値: OK
  2. subtipos_aux から適切な要素を取得: OK
  3. subtipos_aux の subtipos (配列) への変換は問題ありません (for ループ内にアラートを入れています)

それで、誰かが私がここで間違っていることを教えてもらえますか?

ありがとう!

4

1 に答える 1

0

ロード時に選択を埋めていないため、これを cargarTipos の最後に配置する必要があります。

cargarSubtipos(0);

例があります

于 2013-06-12T18:04:43.870 に答える