1

JQueryを使用してDIV要素にHTMLを挿入していますJSPページに次のコードがあります

<div id="definitionsDiv">
    <s:select id="typeDropdown" list="types" listKey="id" listValue="value" value="3" onchange="getWordList()"/>        
</div>

HTMLは次のようになります

<div id="definitionsDiv">
  <select id="typeDropdown" onchange="getWordList()" name="">
    <option value="1">Adverb</option>
    <option value="2">Adjective</option>
    <option selected="selected" value="3">Noun</option>
    <option value="4">Other</option>
  </select>
</div>

これは正常に機能し、Strutsアクションの「types」フィールドから取得した値を含むドロップダウンを表示します。ただし、このHTMLを動的に生成したいので、docloadメソッドで次のように呼び出します...。

function buildDefinitionsHTML()
{
    $("#definitionsDiv").empty();
    $("#definitionsDiv").append('<s:select id="typeDropdown" list="types" listKey="id"     listValue="value" value="1" onchange="getWordList()"/>');
}

これで、生成されたHTMLは次のようになります。

<div id="definitionsDiv">
  <s:select id="typeDropdown" onchange="getWordList()" value="1" listvalue="value"     listkey="id" list="types"></s:select>
</div>

ページに静的HTMLを残したときに発生するように、オプションリストにデータを入力するためのアクションが呼び出されていないようです。これを機能させる方法はありますか?

4

1 に答える 1

1

クライアント側のJavaScriptがサーバー側のコードをページに追加することは不可能です。あなたがする必要があるのは、HTMLサーバー側の両方のブロックを作成し、それらの1つを非表示にすることです。

JSPは私の分野ではありませんが、これでうまくいくかもしれません。JSP / HTML:

<div id="definitionsDiv">
    <s:select id="typeDropdown" list="types" listKey="id" listValue="value" value="3" onchange="getWordList()"/>        
</div>
<div id="definitionsDiv2" style="display:none">
  <s:select id="typeDropdown" onchange="getWordList()" value="1" listvalue="value"     listkey="id" list="types"></s:select>
</div>

jQuery:

function buildDefinitionsHTML() {
    $("#definitionsDiv").empty().append($('#definitionsDiv2').children()); 
}

このように使用.append()すると、既存のDOM要素が非表示のDIVから目的のターゲットDIVに移動します。

ただし、を使用display:noneすると、ページから2番目のDIVのみが非表示になります。それは削除されません。したがって、タグと一緒に目に見えない形で送信されないように、タグdefinitionsDiv2の外側に移動することをお勧めします。<form>definitionsDiv

于 2012-09-17T15:47:36.690 に答える