浏览标记为 " web" 的文章
8月
13
2013

ZZ 解决在IE下label中IMG图片无法选中radio的几个方法

今天遇到一个问题,在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++){
 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 即可。

三种方法都是可行的解决方案,从实用方面,当然是第三种方法最简单,操作和实施起来最快,兼容性也好。问题是,以上仅仅是这种情况下的解决方法,如果从经验方面,三种方法都有自己的优势。

博客剩余工作

6,优化前台(YSlow) 2,404页面 3,IE6下兼容性问题很大 1,标签小工具行高有点儿问题 4,微博聚合 5,推广工作 7,CDN(cloudflare

分类

访问统计