zoukankan      html  css  js  c++  java
  • 解决在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:

    <script type="text/javascript">
    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;
                        }
                    }
                }
            }
        }
    }
    </script>
    

      

    方法二,CSS:

    在图片上覆盖一个容器,容器本身透明显示

    <input type="radio" name="radio" id="a" /><label for="a"><img src="xxx.jpg" /><span></span></label>
    

    将其中SPAN的属性设定有底色并且透明,SPAN覆盖到IMG上,并保持和图片同样的尺寸。

    display:block;
    100px;
    height:100px;
    background:url(xxx.png) no-repeat 0 0;
    position:absolute;
    left:0;
    top:0;

    方法三,HTML代码控制:

    在IMG中加一个属性,disabled 即可。

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

  • 相关阅读:
    火币Huobi API Websocket
    火币Huobi API
    OKEX API(Websocket)
    OKEX API
    Linux下Miniconda量化环境安装
    Numba:高性能Python编译器
    十进制和十六进制互相转换
    JavaScript 原型和原型链
    Redux 进阶之 react-redux 和 redux-thunk 的应用
    Vue 中 $nextTick() 的应用
  • 原文地址:https://www.cnblogs.com/huanlei/p/2901508.html
Copyright © 2011-2022 走看看