解决在IE下label中点击img图片无法选中radio的方案
2017-02-04 16:13
344 查看
今天遇到一个问题,在IE浏览器下,使用label FOR radio后,label中的图片无法选中。
例如,这样的代码
<input type="radio" name="radio" id="a" /><label for="a"><img src="/Labs/images/logo.gif" /></label>
这种情况下,点击label的图片将无法选中radio选项。解决这个问题,目前可以有三种方法,分别是通过JS、CSS或者HTML代码3个方面来解 决。
方法一,JS:
window.onload = function(){
if(document.all && navigator.appVersion.indexOf("MSIE")>-1 && navigator.appVersion.indexOf("Windows")>-1) {
var a = document.getElementsByTagName("label");
for(var i=0,j=a.length;i<j;i++){
console.log(a[i].childNodes.item(0).tagName)
if(a[i].hasChildNodes && a[i].childNodes.item(0).tagName == "IMG")
{
a[i].childNodes.item(0).forid = a[i].htmlFor;
a[i].childNodes.item(0).onclick = function(){
var e = document.getElementById(this.forid);
switch(e.type){
case "radio": e.checked|=1;break;
case "checkbox": e.checked=!e.checked;break;
case "text": case "password": case "textarea": e.focus(); break;
}
}
}
}
}
}
方法二,CSS:
在图片上覆盖一个容器,容器本身透明显示
将其中SPAN的属性设定有底色并且透明,SPAN覆盖到IMG上,并保持和图片同样的尺寸。
display:block;
width:100px;
height:100px;
background:url(xxx.png) no-repeat 0 0;
position:absolute;
left:0;
top:0;
方法三,THML代码控制:
在IMG中加一个属性,disabled 即可。
三种方法都是可行的解决方案,从实用方面,当然是第三种方法最简单,操作和实施起来最快,兼容性也好。问题是,以上仅仅是这种情况下的解决方法,如果从经验方面,三种方法都有自己的优势。
例如,这样的代码
<input type="radio" name="radio" id="a" /><label for="a"><img src="/Labs/images/logo.gif" /></label>
这种情况下,点击label的图片将无法选中radio选项。解决这个问题,目前可以有三种方法,分别是通过JS、CSS或者HTML代码3个方面来解 决。
方法一,JS:
window.onload = function(){
if(document.all && navigator.appVersion.indexOf("MSIE")>-1 && navigator.appVersion.indexOf("Windows")>-1) {
var a = document.getElementsByTagName("label");
for(var i=0,j=a.length;i<j;i++){
console.log(a[i].childNodes.item(0).tagName)
if(a[i].hasChildNodes && a[i].childNodes.item(0).tagName == "IMG")
{
a[i].childNodes.item(0).forid = a[i].htmlFor;
a[i].childNodes.item(0).onclick = function(){
var e = document.getElementById(this.forid);
switch(e.type){
case "radio": e.checked|=1;break;
case "checkbox": e.checked=!e.checked;break;
case "text": case "password": case "textarea": e.focus(); break;
}
}
}
}
}
}
方法二,CSS:
在图片上覆盖一个容器,容器本身透明显示
<input type="radio" name="radio" id="a" /><label for="a"><img src="xxx.jpg" /><span></span></label>
将其中SPAN的属性设定有底色并且透明,SPAN覆盖到IMG上,并保持和图片同样的尺寸。
display:block;
width:100px;
height:100px;
background:url(xxx.png) no-repeat 0 0;
position:absolute;
left:0;
top:0;
方法三,THML代码控制:
在IMG中加一个属性,disabled 即可。
三种方法都是可行的解决方案,从实用方面,当然是第三种方法最简单,操作和实施起来最快,兼容性也好。问题是,以上仅仅是这种情况下的解决方法,如果从经验方面,三种方法都有自己的优势。
相关文章推荐
- 解决在IE下label中IMG图片无法选中radio的几个方法
- 解决在IE下label中IMG图片无法选中radio的几个方法
- 解决在IE下LABEL中IMG图片无法选中RADIO的几个方法
- 解决在IE下label中IMG图片无法选中radio的几个方法
- IE下 checkbox、radio等标签的label中的img点击无效(点击不能选中)问题解决
- IE label中有图片 无法选中radio?其实可以完美解决
- IE下单选按钮隐藏后点击对应label无法选中的bug解决
- IE下单选按钮隐藏后点击对应label无法选中的bug解决
- 在IE下label标签图片下隐藏的单选按钮radio不起作用解决办法
- 解决dedecms编辑器选中图片再点击自动排版时,在ie中会崩溃问题(原因未明)
- IE下img.onload无法获取图片宽高的问题
- 解决IE无法登录邮箱论坛,无法加载页面图片!
- 解决IE6下JS动态设置图片IMG的SRC时图片无法加载错误的方法
- IE无法显示PNG格式图片的解决
- 关于V5.7 正式版 自定义字段图片上传无法点击选择的问题解决!
- IE无法显示PNG格式图片的解决
- 图片设置解决CSS下img图片多余空白或者是表格中有空隙Bug的方案
- tomcat中jsp引用图片img的src属性带中文路径无法显示的解决
- 解决IE6下JS动态设置图片IMG的SRC时图片无法加载错误的方法
- 解决用<img src="<%# Eval("ShowPhoto")%>"动态绑定图片,发布到IIS上无法显示的问题