Javascript 在IE 9中输入单选按钮悬停问题
我在IE9中遇到了一个问题:每当我将鼠标悬停在顶级包装器div上时,第一个单选按钮就好像它被悬停在上面一样。因此,即使我按下了最后一个无线电输入,如果我单击包装器中的任何位置,无线电也会返回到第一个。当我将鼠标悬停在包装器div上时,第一个无线电输入上的浅蓝色将变回应该的灰色 我的页面在FF、Chrome和IE兼容模式下正常工作 我尝试用输入创建一个简单的页面,但无法重新创建问题,因为它发生在我的大型网页中 我们将非常感谢您对导致这种情况的原因和/或如何停止这种情况的任何意见 编辑#1:mycode:Javascript 在IE 9中输入单选按钮悬停问题,javascript,html,css,Javascript,Html,Css,我在IE9中遇到了一个问题:每当我将鼠标悬停在顶级包装器div上时,第一个单选按钮就好像它被悬停在上面一样。因此,即使我按下了最后一个无线电输入,如果我单击包装器中的任何位置,无线电也会返回到第一个。当我将鼠标悬停在包装器div上时,第一个无线电输入上的浅蓝色将变回应该的灰色 我的页面在FF、Chrome和IE兼容模式下正常工作 我尝试用输入创建一个简单的页面,但无法重新创建问题,因为它发生在我的大型网页中 我们将非常感谢您对导致这种情况的原因和/或如何停止这种情况的任何意见 编辑#1:myc
<div id="wrapper">
...
<div id="region_sel_type">
<input type="radio" id="optLine" name="radio_region_sel_type" value="Line" /><label id="lblForOptLine" for="optLine" title="Line" unselectable="on"></label>
<input type="radio" id="optPoint" name="radio_region_sel_type" value="Point" /><label id="lblForOptPoint" for="optPoint" title="Point" unselectable="on"></label>
<input type="radio" id="optPolygon" name="radio_region_sel_type" value="Polygon" /><label id="lblForOptPolygon" for="optPolygon" title="Polygon" unselectable="on"></label>
<input type="radio" id="optList" name="radio_region_sel_type" value="List" /><label id="lblForOptList" for="optList" title="Input Coordinates" unselectable="on"></label>
<input type="radio" id="optUploadKML" name="radio_region_sel_type" value="KML" /><label id="lblOptUploadKML" for="optUploadKML" title="Upload KML" unselectable="on"></label>
<input type="radio" id="optOpen" name="radio_region_sel_type" value="Open" /><label id="lblForOptOptn" for="optOpen" title="Open Saved ROI" unselectable="on"></label>
</div>
...
</div>
...
...
解决方案:
在“wrapper”分区的某个地方,我有一个自动关闭标签IE9不支持(即使它们应该支持)
您描述的是
标签的行为。标签标签的作用类似于悬停,并单击标签的for
属性中指定的id
的输入目标
您可能无意中将大标签应用于某个特定的单选按钮,或者其中一个按钮被错误地关闭,从而导致它将整个div
包裹起来
您是否检查了所有的标签
标签,以确保没有任何标签被错误关闭
现在您的问题已经解决了,我想在这里添加一个关于HTML5中的自动关闭标记的注释
XHTML开始以严格的XML吸引世界。现在我们身处HTML5世界,很容易相信这仍然是事实。然而,HTML5不知道什么是/>
。相反,它会尝试为您自动关闭一些标记
因此,在您的例子中,大多数浏览器似乎将隐式
放在了预期的位置,但有一个浏览器将其放在了上下文之外。不管怎样,很可能他们中没有人关心/>
还记得我们的老朋友吗?为什么我不是红色的?HTML将
放在
之前,因为
标记中不允许使用块元素
最好的办法是摆脱在任何地方使用/>
的习惯,除了总是没有内容的元素(链接,br
,img
,等等。-即使这样,您可能也只想为了代码的可读性而这样做,因为在解析中,这是完全没有区别的)
此处的更多信息:您可以发布包含单选按钮的div的代码吗?这听起来像是您的代码输入错误。你看到那一页了吗?验证器将捕获下面答案中提到的一些错误。Sparky是对的!验证您的代码。您可以使用@Sparky:Shoot,但页面具有表单身份验证。我将尝试立即删除身份验证。修复了所有验证错误,仍然相同:(让我来测试一下这个理论。BRB这似乎是一个很有希望的可能性,不幸的是,我删除了所有相关的标签,但输入仍在这样做。然后我想可能我不小心在页面上的某个地方有另一个标签,FOR属性指向此处。因此删除了除2之外的所有无线电输入,并重新标记了它们的“id”和“FOR”值。仍然不走运。@capdragon不管什么,它总是第一个吗?如果你把另一个输入,同一组的一部分,放在那个div之外的某个地方会怎么样?@Renesis:是的,不管什么,第一个!Werid。那个div之外的输入仍然有效。所以我放第一个输入(同一组,只是复制粘贴)在包装器外部,但当我将鼠标悬停在包装器div上时,它仍然会做悬停的事情,即使它在外部。然后我更改了“名称”(组),仍然是一样的事情。好的:我发现了…它是上面div上的一个自关闭标签,类似()这很奇怪,因为所有浏览器都应该支持自关闭元素。
<label id='x'/>