1


私は今何日も検索しようとしていますが、答えが見つかりません。
私の問題はこれです:私はフォームを送信するためにハイパーリンクとJavascriptを使用しますが、リンクとともにパラメーターも送信する必要があります。コードは次のようになります。

<form action="Action.jsp" method="post" id="form-id">
  <input .../>
  ...
  <c:forEach items="${items}" var="item" varStatus="vs">
    <a href="Action.jsp?id=${vs.count}" 
       onclick="javascript:document.forms['form-id'].submit(); return false">
       ${vs.count}
    </a>
  </c:forEach>
</form>

省略した場合return false、パラメータIDは転送されますが、他の<input .../>パラメータは転送されません。その逆も同様です。<input type="hidden" .../>リンクのパラメータのみが必要なため、パラメータを使用できません。

助けていただければ幸いです。

4

3 に答える 3

1

パラメータをフォームのアクション プロパティにも追加する必要があります。これにより、送信時にページが送信される URL が決まります。

そのため、リンクがこのように動作する場所にクリックされたときに、おそらく JavaScript を使用してこのプロパティ値を変更する必要があります。

<form action="Action.jsp?id=${vs.count}" method="post" id="form-id">

を削除するreturn falseと、本質的には、フォームがすばやく送信された後にリンクのデフォルトの動作が得られるだけです。

于 2012-11-02T23:24:19.863 に答える
0

ループの外側に非表示を追加すると、input送信する前にその入力の値を設定できます。

<form action="Action.jsp" methode="post" id="form-id">
  <input .../>
  <input type="hidden" id="button-id"/>
  ...
  <c:forEach items="${items}" var="item" varStatus="vs">
    <a href="Action.jsp" 
       onclick="javascript:document.getElementById('button-id').value=${vs.count};document.forms['form-id'].submit(); return false">
       ${vs.count}
    </a>
  </c:forEach>
</form>
于 2012-11-02T23:41:21.023 に答える
-1

アンカーが必要ない場合は、代わりにbutton要素を使用して送信することにより、JavaScript を使用せずにこれを解決できます。

<button name="id" type="submit" value="${vs.count}">${vs.count}</button>

バージョン 8 より前の Internet Explorer は<button></button>タグの間のテキストを送信しますが、他のブラウザーは値を送信することに注意してください。

于 2012-11-03T00:08:32.847 に答える