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

您还需要将参数添加到表单的 action 属性中。这决定了提交时页面提交到哪个 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

如果您不需要锚点,您可以在不使用 JavaScript 的情况下通过使用button元素提交来解决此问题:

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

请注意,Internet Explorer 8 之前的版本将提交<button></button>标记之间的文本,而其他浏览器将提交该值。

于 2012-11-03T00:08:32.847 回答