3

我有一个按钮标签和输入标签,它的文本与我要做什么不同,见下文。

<button value="<%=RS("field1")%>" name="change" id="change">Change</button>

这在 Firefox 中很有效,但在 IE 中.. dun,dun,dunnnn... 按钮的值以单词“change”的形式返回,这意味着按钮显示的文本。

我通常只会使用和输入标签,但我认为我只能使用按钮标签

有没有办法解决这个问题?

4

6 回答 6

6

来自w3schools.com

重要提示:如果您在 HTML 表单中使用按钮元素,不同的浏览器将提交不同的值。Internet Explorer 将提交<button>and</button> 标记之间的文本,而其他浏览器将提交 value 属性的内容。使用 input 元素在 HTML 表单中创建按钮。

因此,你应该做的是<input type="button" />

于 2010-12-15T13:41:13.020 回答
3

在这种情况下,我通常所做的是将信息嵌入name属性中,这样你就可以

<button name="change:<%=RS("field1")%>" id="change:<%=RS("field1")%>">Change</button>

然后使用服务器端代码丢弃返回的值,然后将名称分解回 {name, value) 对。

(请注意,您的“id”无论如何都必须是唯一的。)

于 2010-12-15T14:30:52.457 回答
2

据我所知,没有办法解决它。这只是 IE 处理按钮标签的方式,它将在开始标签和结束标签之间发送文本。

考虑到您不能为按钮使用普通的输入标签,那么使用隐藏字段来传达您想要使用的方法怎么样?

<form action="somepage" method="POST">
    <!-- some fields here -->
    <input type="hidden" name="action" value="<%=RS("field1")%>" />
    <button name="change" id="change">Change</button>
</form>
于 2010-12-15T13:44:37.437 回答
1

在我看来,所需的值总是在按钮“值”属性中(因为这是其他浏览器提交的值),所以为什么不简单地:

<button ... onclick="this.innerHTML=this.value;" ... >
于 2013-03-25T17:05:53.060 回答
0

如上所述,不要检查对 {button_name,button_value} 中的值,而是只检查输入集中存在的 button_name 而不检查其值。

于 2014-09-03T10:57:52.450 回答
0

IE8 确实发送了值,所以它只是 IE7(也可能是 6,但谁在乎)问题。

无论如何,一种可能的技巧是将值作为文本的一部分隐藏,然后在按钮单击事件中(使用 JavaScript)将按钮文本更改为该值。

最终结果将如下所示:

<button value="<%=RS("field1")%>" name="change" onclick="this.innerHTML = this.childNodes[1].innerHTML;"><span>Change</span><span style="display: none;"><%=RS("field1")%></span></button>

此外,当您在循环中使用此 ID 时,请勿设置 ID 以避免多个元素共享相同的 ID - 这是无效的,如果您出于某种原因需要 ID,请在每次迭代中附加一些独特的内容。

于 2010-12-15T14:47:52.703 回答