0

1 つのドロップダウン メニューで 2 つのフィールドが生成されるフォームがあります。問題は、1 つのフィールドを生成し、2 つのフィールドを取得しようとしていることです。最初のフィールドには price が表示され、2 番目のタグには product_id が表示されます。私のスクリプトは価格を表示しているだけで、ID は表示していません。知識不足で困っています。誰かの助けが必要です。

JavaScript:

function setOptions(chosen) {
    var selbox = document.myform.opttwo;
    selbox.options.length = 0;
    if (chosen == " ") {
        selbox.options[selbox.options.length] = new Option('Please select one of the options above first',' ');   }
        selbox.options[selbox.options.length] = new Option('100 Directory Submission', '$9.99', '1');
        selbox.options[selbox.options.length] = new Option('200 Directory Submission', '$19.99', '2');
        selbox.options[selbox.options.length] = new Option('300 Directory Submission','$29.99', '3');
    }
    document.myform.amount.value="";
    document.myform.hidden.value="";
}​

HTML:

<select name="opttwo" size="1" onchange="this.form.amount.value=this.value;">
    <option value=" " selected="selected">Select any option of the above first</option>
</select>
Amount Payable:<input type="text" readonly="readonly" name="amount" />
Product id:<input type="text" name="hidden" readonly="readonly" />
4

1 に答える 1

1

まず、閉じた中括弧や閉じていない中括弧など、コードに明らかな問題がいくつかあります。

その一例が次の行にあります。

if (chosen == " ") {
        selbox.options[selbox.options.length] = new Option('Please select one of the options above first',' ');   }

編集:これはもはや当てはまりません。

次に、作成しようとしているOptionsオブジェクトには、残念ながら取得しようとしている「id」プロパティがありません。

だからあなたのコード

selbox.options[selbox.options.length] = new Option('100 Directory Submission', '$9.99', '1');

IDとして「1」を取得していません。

コンストラクターは

new Option([text], [value], [defaultSelected], [selected])

ただし、onchangeハンドラーでこれを行うことにより、要素のインデックスを取得できます。

this.form.hidden.value=this.selectedIndex;

第3に、onchangeタグでスクリプトを使用するパスを続行する場合は、通常は推奨されませんが、非表示の入力の値も設定する必要があります。

このような:

onchange="this.form.amount.value=this.value; this.form.hidden.value=this.value;"

注:上記のこの行は、言うだけで間違った値を示しますが、その要点はわかります。

私はあなたがおもちゃで遊んで、それがどのように行われるかを見るためにフィドルを作りました。

はい、これ

いくつかのAPIドキュメントは、私が信じている順序で常にあります。

更新:すべてのオプションでIDを動的に設定するには、次のように選択リストの要素をループする必要があります。

for (var i=0; i<selbox.length; i++){
     selbox.options[i].setAttribute('id', 'hello'+i); 
}

次に、設定した行にonchange()これを追加します

this.form.hidden.value=this[selectedIndex].id;

これで、オプション「hello0」、「hello1」、「hello2」、「hello3」を選択すると、入力が表示されます。

また、私はあなたのためにフィドルを更新しました。

MozillaオプションAPI

于 2012-12-10T11:41:12.517 に答える