html - IE 在单击按钮元素时发送内部 HTML

标签 html internet-explorer forms button input

我的网页中有以下 html(已简化)。

<button type="submit" name="action" value="ButtonA">Click Here</button>

在 Firefox 中,它提交“ButtonA”作为“action”表单值的值。但是,在 IE7 中,它提交“单击此处”。有什么办法可以解决这个问题吗?我不想使用输入标签,因为我需要能够自定义文本而不影响发送回表单的值(本地化)。基本上,我希望能够有多个具有相同名称的按钮,并根据它们的值,在提交时执行不同的操作。在这种情况下,是否有任何容易让 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>

关于html - IE 在单击按钮元素时发送内部 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378632/

相关文章:

javascript - IE9 : CSS msTransform:translate

html - 如何使 Html 下拉列表向上而不是向下

javascript - 在硬编码处理程序周围包装 jquery 事件处理程序

jquery - 使用 jQuery 填写表单

html - 复杂表格标题的位置粘性

html - 为什么这些条件注释告诉我 IE8 是 IE7?

jquery - jQuery UI 对话框中的文本区域高度/宽度

html - 有什么方法可以隐藏 div 的内容而不是 div 本身?

JavaScript 按钮,在我点击之前将我带到文档中

javascript - JS 崩溃没有正确显示我的内容