IE 无法读取真实的按钮值!如何解决这个问题?

问题描述 投票:0回答:6

我有一个按钮标签和输入标签,它的文本与我要执行的值不同,请参见下文。

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

这在 Firefox 中工作得很好,但在 IE 中.. dun,dun,dunnnn ...按钮的值返回为单词“change”,这意味着按钮显示的文本。

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

有什么办法可以解决这个问题吗?

javascript html button
6个回答
6
投票

来自 w3schools.com

重要提示:如果您使用按钮 HTML 表单中的元素,不同 浏览器将提交不同的值。 Internet Explorer 将提交文本

<button>
</button>
之间 标签,而其他浏览器将提交 value 属性的内容。 使用输入元素创建 HTML 表单中的按钮。

因此,你应该做的是

<input type="button" />


3
投票

在这种情况下,我通常所做的是将信息嵌入到

name
属性中,这样你就可以

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

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

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


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>

1
投票

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

<button ... onclick="this.innerHTML=this.value;" ... >

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,请在每次迭代中为其添加唯一的内容。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.