按了哪个按钮?

时间:2014-07-02 13:12:22

标签: html forms jstl

我知道之前可能已经提出过这个问题,但我似乎无法根据自己的情况找到合理的答案。

我有一个包含多个按钮的表单提交,我需要知道按下了哪个按钮。

表单内部的小代码片段可能如下所示:

<input type="submit" name="action" value="<fmt:message key="ID001"/>"/> <!-- Save -->  
<input type="submit" name="action" value="<fmt:message key="ID002"/>"/> <!-- Delete --> 
<input type="submit" name="action" value="<fmt:message key="ID003"/>"/> <!-- some other action -->

fmt:message部分只考虑客户端的语言并将单词放在按钮上。

到目前为止,我在提交按钮上添加了一个动作处理程序,并在表单上添加了一个隐藏的输入元素,告诉我哪个被按下了,但我需要支持该网站而不依赖于javascript。

由于按钮的值是可变的,我该如何处理? (基本上我可以这样做,如果输入有一个地方可以说value =“”和text =“”,但它没有)

我想过将我想要的“值”移动到name属性,例如“save”和“delete”,并通过执行以下操作来检查是否设置了值:

<c:if test="${!empty param.save}">
.
.
.
</c:if>

但是,当我有一个x大小的列表可以删除时,问题就出现了。 我会举一个例子说明我的意思:

表格jsp:

<input type="submit" name="delete_row|1" value="<fmt:message key="ID001"/>"/> <!-- delete first row-->  
<input type="submit" name="delete_row|2" value="<fmt:message key="ID002"/>"/> <!-- deleted second row --> 
<input type="submit" name="delete_row|3" value="<fmt:message key="ID003"/>"/> <!-- delete third row -->
...

服务器端jsp:

<c:if test="${!empty param.delete_row|x}"> 
.
. <%-- handle the specific row deletion here--%>
.
</c:if>

^ - 我不知道x会是什么......它可以是1,或者100或甚至更多,所以我需要一种方法来找到以delete_row开头并以某种方式分隔它的任何param。 / p>

我看了一下它并发现了<button>元素,但在IE的某些版本中不支持它(据我记得,IE&lt; 8)。

所以,我的限制是:

  • 没有js
  • 必须得到与IE6一样古老的浏览器支持,或者更多

有人有什么建议吗? 如果我需要更详细地解释一些内容,请发表评论

2 个答案:

答案 0 :(得分:0)

使用button代替input

<button name='submit' type='submit' value='1'><fmt:message key="ID001"/></button>
<button name='submit' type='submit' value='2'><fmt:message key="ID002"/></button>
<button name='submit' type='submit' value='3'><fmt:message key="ID003"/></button>

如果您想要点击按钮,但不提交表单,请向其添加type='button'

答案 1 :(得分:0)

据我了解,如果我错了,希望有人会纠正我,HTML规范并未提供您在使用时所寻找的内容。顺便说一下,建议您查看HTML4规范。

因此,要么您不支持旧浏览器,要么使用Java脚本。 在这两种情况下,你都需要和老板谈谈。