我的网页上有以下html(简体).
<button type="submit" name="action" value="ButtonA">Click Here</button>
在Firefox中,它提交“ButtonA”作为“action”表单值的值.但是,在IE7中,它提交了“Click Here”.有什么方法可以解决这个问题吗?我不想使用输入标签,因为我需要能够自定义文本而不影响发送回表单的值(本地化).基本上,我希望能够有多个具有相同名称的按钮,并根据它们的值,在提交时执行不同的操作.在这种情况下,让IE正常运行有什么容易吗?
[更多]
也许我应该更清楚,但我不能使用
<input type="submit" name="Action" value="ButtonA">
因为我需要能够更改为本地化规则显示的文本,而不会影响随表单提交的按钮的实际值.
[更多]
为了进一步阐述,基本上,我希望按钮能够根据语言说“保存”或“Sauver”,但不会将提交给服务器的值更改.我还希望有多个具有相同名称的按钮,并根据值,执行某些操作,而不是依赖于按钮名称,并测试是否存在该按钮的值.代码已经从这个角度编写了,我只想在没有现有服务器端处理代码的情况下更改值中显示的文本.
这是一个非常好的explanation of the problem的链接,有一些可能的解决方案.
解决方法
一种解决方案是使用Javascript和隐藏字段
<input type="hidden" name="actionparam" value="DoNothing"> <input type="button" onclick="OnSubmitForm('ActionA')" Value="Click Here for A" /> <input type="button" onclick="OnSubmitForm('ActionB')" Value="Click Here for B" /> function OnSubmitForm(actionname) { var f = document.frm; f.actionparam.value = actionname; f.submit(); }
这也可以作为隐藏的CATPCHA,您可以在javascript函数中添加一些客户端验证
编辑:
既然你说要降级到非javascript浏览器,你可以使用这个版本,只允许一个默认操作给没有javascript的人
额外的按钮在HTML中禁用,但随后使用javascript重新启用.
经过测试的代码:
<html> <head> <script type="text/javascript"> <!-- function OnSubmitForm(actionname) { var f = document.frm; f.actionparam.value = actionname; f.submit(); } //--> </SCRIPT> </head> <body> <noscript> <div style="background-color: yellow; margin: 20px;" > You are using a limited version of the site because you don't have Javascript enabled </div> </noscript> <h1>form</h1> <form name="frm" method="post"> <input type="hidden" name="actionparam" value="DefaultAction" /> <button name="defaultbutton" type="submit">default action</button> <button name="extrabutton1" disabled onclick="OnSubmitForm('ExtraAction1')">Extra action 1</button> <button name="extrabutton2" disabled onclick="OnSubmitForm('ExtraAction2')">Extra action 2</button> </form> <h1>Results</h1> <h2>forms collection</h2> <ol> <% For x = 1 To Request.Form.count() Response.Write("<li>" + Request.Form.key(x) + "=" + Request.Form.item(x) + "</li>") Next %> </ol> <script type="text/javascript"> <!-- document.frm.extrabutton1.disabled = false; document.frm.extrabutton2.disabled = false; //--> </SCRIPT> </body> </html>