Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE没有读取真正的按钮值!怎么绕过这个?_Javascript_Html_Button_Solution - Fatal编程技术网

Javascript IE没有读取真正的按钮值!怎么绕过这个?

Javascript IE没有读取真正的按钮值!怎么绕过这个?,javascript,html,button,solution,Javascript,Html,Button,Solution,我有一个按钮标签和输入标签,它有不同的文本,我知道它的值做什么,见下文 <button value="<%=RS("field1")%>" name="change" id="change">Change</button> 更改 这在Firefox中非常有效,但在IE中却非常有效。。邓,邓,邓恩。。。按钮的值返回为单词“change”,即按钮显示的文本 我通常只使用和输入标签,但我想我只能使用按钮标签 有什么办法可以解决这个问题吗 来自: 重要提示:如果您

我有一个按钮标签和输入标签,它有不同的文本,我知道它的值做什么,见下文

<button value="<%=RS("field1")%>" name="change" id="change">Change</button>
更改
这在Firefox中非常有效,但在IE中却非常有效。。邓,邓,邓恩。。。按钮的值返回为单词“change”,即按钮显示的文本

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

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

来自:

重要提示:如果您使用按钮 HTML表单中的元素,不同 浏览器将提交不同的值。 Internet Explorer将提交文本 在
标签,而其他浏览器将提交 值属性的内容。 使用输入元素创建 HTML表单中的按钮


因此,您应该做的是

,据我所知,这是无法避免的。这只是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>

改变

在这种情况下,我通常会将信息嵌入
name
属性中,以便

<button name="change:<%=RS("field1")%>" id="change:<%=RS("field1")%>">Change</button>
更改
然后使用服务器端代码丢弃返回的值,然后将名称分解回{name,value)对


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

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

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

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


如上所述,不要检查对中的值{button\u name,button\u value}相反,只检查输入集中存在的按钮名称,而不检查其值。

除非他想向按钮添加HTML,这是
无法做到的。我不认为“输入”标记可以与实际文本有不同的值,这是我的issueThanks Andy和Hayley。是的,输入标记不允许不同的按钮文本和文本值。问题是,您不能在HTML中同时执行此操作并支持IE。句点。您可以在提交之前添加javascript onclick事件来修改值,或者使用此处答案中的其他建议之一。仅HTML的解决方案(按钮具有不同的文本和值)将不支持IE。我在此处放置了一个隐藏字段,但按钮处于循环中,因此每个按钮的值都为“rs”(“字段”),我发现hiddenfield的输出是“firstloopvalue,secondloopvalue”等等。问题在于button元素,这只是一个已知的问题,它的处理方式不同。所以为什么不能使用输入?当表单中有两个或多个按钮时没有用。如何识别按下了哪个按钮?好的。不同的按钮我们应该有不同的名称。然后我们应该测试按下的按钮名称只存在于表单中,而不是检查其值。IE8行为取决于文档兼容性模式。@mrec yep,在编写此答案时不知道这一点。不再需要IE8来测试这些内容,因此如果您想通过提供更具体的细节来改进答案,请让我们继续做吧,指向这个评论,这样编辑就会被批准。