我有一个按钮标签和输入标签,它的文本与我要做什么不同,见下文。
<button value="<%=RS("field1")%>" name="change" id="change">Change</button>
这在 Firefox 中很有效,但在 IE 中.. dun,dun,dunnnn... 按钮的值以单词“change”的形式返回,这意味着按钮显示的文本。
我通常只会使用和输入标签,但我认为我只能使用按钮标签
有没有办法解决这个问题?
我有一个按钮标签和输入标签,它的文本与我要做什么不同,见下文。
<button value="<%=RS("field1")%>" name="change" id="change">Change</button>
这在 Firefox 中很有效,但在 IE 中.. dun,dun,dunnnn... 按钮的值以单词“change”的形式返回,这意味着按钮显示的文本。
我通常只会使用和输入标签,但我认为我只能使用按钮标签
有没有办法解决这个问题?
重要提示:如果您在 HTML 表单中使用按钮元素,不同的浏览器将提交不同的值。Internet Explorer 将提交
<button>
and</button>
标记之间的文本,而其他浏览器将提交 value 属性的内容。使用 input 元素在 HTML 表单中创建按钮。
因此,你应该做的是<input type="button" />
在这种情况下,我通常所做的是将信息嵌入name
属性中,这样你就可以
<button name="change:<%=RS("field1")%>" id="change:<%=RS("field1")%>">Change</button>
然后使用服务器端代码丢弃返回的值,然后将名称分解回 {name, value) 对。
(请注意,您的“id”无论如何都必须是唯一的。)
据我所知,没有办法解决它。这只是 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>
在我看来,所需的值总是在按钮“值”属性中(因为这是其他浏览器提交的值),所以为什么不简单地:
<button ... onclick="this.innerHTML=this.value;" ... >
如上所述,不要检查对 {button_name,button_value} 中的值,而是只检查输入集中存在的 button_name 而不检查其值。
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,请在每次迭代中附加一些独特的内容。