我尝试使用谷歌搜索,但没有得到正确的答案,所以这里是问题给这个论坛的专家:
我想在我的网页上呈现一个按钮,使其值与屏幕上显示的不同。例如,如果我使用下面的html标签,则显示确认。
<button name="type" value="save">Confirm</button>
但是我想在服务器中读取值“save”,以便我可以根据它获得某些逻辑。如果我使用
request.getParameter("type");
我得到“确认”而不是“保存”。
我的目标是让多个按钮具有不同的值,而在服务器端,我想知道点击了哪个按钮。我不想将服务器代码与显示的文本链接起来。
我可以做一个解决方法,onsubmit
我调用一个捕获点击按钮的javascript函数,并将“save”放在名为=“type”的隐藏字段中。但这似乎是一个常见的客户端 - 服务器问题,必须有一个更优雅的解决方案,我不知道这个问题。
感谢任何帮助。
答案 0 :(得分:0)
你可以发布更多代码吗? HTML表单和服务器端代码?您期望的行为实际上是您显示的代码的预期行为。我怀疑你的代码中有其他错误(比如可能在某处重用变量名)。
答案 1 :(得分:0)
<button>
有效,value
请求中发送POST
属性,而显示的文本是<button>...</button>
之间的任何内容。
不幸的是,标准没有定义此行为,因此浏览器可以按照自己的方式实现。在Firefox中,发布了value
属性。但是在Internet Explorer中(我知道IE8,不知道它是否在以后的版本中发生了变化),value
未发布。取而代之的是显示的文字!
简而言之,您必须解决此问题。 here发布了一些好的建议。
这是我发现最有用或最适合我的东西。添加一个隐藏字段,其名称与我打算在服务器中使用的名称相同。
<input type="hidden" name="type" id="btntype" />
<button type="submit" name="submitbtn" value="save">Confirm</button>
<button type="submit" name="submitbtn" value="verify">Verify</button>
<button type="submit" name="submitbtn" vallue="cancel">Cancel</button>
这在Javascript中:
$(document).ready(function() {
$(":submit[name='submitbtn']").on("click", function() {
$("#btntype").val($(this).val());
});
});
现在,在servlet中,我可以使用:
request.getParameter("type");
如果单击确认,则会显示值save
,如果单击确认,则会显示verify
,如果单击取消按钮,则会cancel
。
答案 2 :(得分:0)
这种方式也可行。只需定义按钮的id。只要点击特定的提交按钮,只需调用.on()方法
<button id="filter" value="value1" type="submit">Confirm</button>
<button id="filter" value="value2" type="submit">Verify</button>
<button id="filter" value="value3" type="submit">Cancel</button>
$(window).on("click", "#filter", function() {
alert($(this).val());
});