0

次のコードを使用して、html形式のドロップダウンリストを作成しています。

<html:select property="complaintCategory" onchange="showfield(this.options[this.selectedIndex].value)" >
<html:option value="option1">option1</html:option>
<html:option value="option2">option2</html:option>
<html:option value="option3">option3</html:option>
<html:option value="Other">Other</html:option>
</html:select>
<div id="div1"></div>

ユーザーが[その他]オプションを選択したときに何かを書き込めるように、テキストボックスを作成したいと思います。関数showField(name)は、新しいテキストボックスを作成しています。

function showfield(name)
    {
        if(name=='Other')document.getElementById('div1').innerHTML='<input type="text" name="complaintCategory" />';
        else document.getElementById('div1').innerHTML='';
    }

私が直面している問題は、ドロップダウンリストから[その他]オプションを選択して何かを書き込むと、テキストが保存されず、値[その他]としてのみ保存されることです。テキストボックスに書かれたテキストをcomplaintCategoryとして渡したい。これについて誰かの助けを本当にいただければ幸いです、私は立ち往生しています。

前もって感謝します...

4

1 に答える 1

0

(私は<html:select property="complaintCategory"が出力されるという前提で作業しています<select name="complaintCategory"。通常は、問題をサーバー側コードまたはクライアント側コードに絞り込み、そのうちの 1 つだけを提供すると役立ちます。)

フォームを送信すると (その他を選択した後) 、同じ名前の要素が2 つ表示されます。

送信されたフォーム データを読み取るために使用しているサーバー側のコードが何であれ、最初の値を取得しているように見えます。

また:

  1. サーバー側のコードを変更して 2 番目の値を取得します (フォーム データの解析に使用している API がわからないため、その詳細はわかりません)。
  2. 生成された入力を別の名前と if ステートメントで呼び出します。

例えば

クライアント側:

if(name=='Other')document.getElementById('div1').innerHTML='<input type="text" name="otherComplaintCategory" />';

サーバー側 (疑似コード):

IF complaintCategory is "Other":
THEN complaintCategory = otherComplaintCategory
于 2013-01-24T12:51:36.067 に答える