javascript 单选框,多选框美化代码


Posted in Javascript onAugust 01, 2008

javascript 单选框,多选框美化代码

crir = {
    init: function() {
        arrLabels = document.getElementsByTagName('label');

        searchLabels:
        for (var i=0; i<arrLabels.length; i++) {            
            // get the input element based on the for attribute of the label tag
            if (arrLabels[i].getAttributeNode('for') && arrLabels[i].getAttributeNode('for').value != '') {
                labelElementFor = arrLabels[i].getAttributeNode('for').value;                
                inputElement = document.getElementById(labelElementFor);
            }
            else {                
                continue searchLabels;
            }    

            inputElementClass = inputElement.className;    

            // if the input is specified to be hidden intiate it
            if (inputElementClass == 'crirHiddenJS') {
                inputElement.className = 'crirHidden';

                inputElementType = inputElement.getAttributeNode('type').value;    

                // add the appropriate event listener to the input element
                if (inputElementType == "checkbox") {
                    inputElement.onclick = crir.toggleCheckboxLabel;
                }
                else {
                    inputElement.onclick = crir.toggleRadioLabel;
                }

                // set the initial label state
                if (inputElement.checked) {
                    if (inputElementType == 'checkbox') { arrLabels[i].className = 'checkbox_checked'}
                    else { arrLabels[i].className = 'radio_checked' }
                }
                else {
                    if (inputElementType == 'checkbox') { arrLabels[i].className = 'checkbox_unchecked'}
                    else { arrLabels[i].className = 'radio_unchecked' }
                }
            }
            else if (inputElement.nodeName != 'SELECT' && inputElement.getAttributeNode('type').value == 'radio') { // this so even if a radio is not hidden but belongs to a group of hidden radios it will still work.
                arrLabels[i].onclick = crir.toggleRadioLabel;
                inputElement.onclick = crir.toggleRadioLabel;
            }
        }            
    },    

    findLabel: function (inputElementID) {
        arrLabels = document.getElementsByTagName('label');

        searchLoop:
        for (var i=0; i<arrLabels.length; i++) {
            if (arrLabels[i].getAttributeNode('for') && arrLabels[i].getAttributeNode('for').value == inputElementID) {                
                return arrLabels[i];
                break searchLoop;                
            }
        }        
    },    

    toggleCheckboxLabel: function () {
        labelElement = crir.findLabel(this.getAttributeNode('id').value);

        if(labelElement.className == 'checkbox_checked') {
            labelElement.className = "checkbox_unchecked";
        }
        else {
            labelElement.className = "checkbox_checked";
        }
    },    

    toggleRadioLabel: function () {             
        clickedLabelElement = crir.findLabel(this.getAttributeNode('id').value);

        clickedInputElement = this;
        clickedInputElementName = clickedInputElement.getAttributeNode('name').value;

        arrInputs = document.getElementsByTagName('input');

        // uncheck (label class) all radios in the same group
        for (var i=0; i<arrInputs.length; i++) {            
            inputElementType = arrInputs[i].getAttributeNode('type').value;
            if (inputElementType == 'radio') {
                inputElementName = arrInputs[i].getAttributeNode('name').value;
                inputElementClass = arrInputs[i].className;
                // find radio buttons with the same 'name' as the one we've changed and have a class of chkHidden
                // and then set them to unchecked
                if (inputElementName == clickedInputElementName && inputElementClass == 'crirHidden') {                
                    inputElementID = arrInputs[i].getAttributeNode('id').value;
                    labelElement = crir.findLabel(inputElementID);
                    labelElement.className = 'radio_unchecked';
                }
            }
        }

        // if the radio clicked is hidden set the label to checked
        if (clickedInputElement.className == 'crirHidden') {
            clickedLabelElement.className = 'radio_checked';
        }
    },

    addEvent: function(element, eventType, doFunction, useCapture){
        if (element.addEventListener) 
        {
            element.addEventListener(eventType, doFunction, useCapture);
            return true;
        } else if (element.attachEvent) {
            var r = element.attachEvent('on' + eventType, doFunction);
            return r;
        } else {
            element['on' + eventType] = doFunction;
        }
    }
}

crir.addEvent(window, 'load', crir.init, false);

在线演示http://img.3water.com/online/checkbox/sample.html

打包下载javascript 单选框,多选框美化代码CRIR.rar

Javascript 相关文章推荐
多种方法实现360浏览器下禁止自动填写用户名密码
Jun 16 Javascript
jQuery实现鼠标选文字发新浪微博的方法
Apr 02 Javascript
JavaScript仿flash遮罩动画效果
Jun 15 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
Dec 28 Javascript
ES6新特性之变量和字符串用法示例
Apr 01 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
基于ES6 Array.of的用法(实例讲解)
Sep 05 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
老生常谈JS中的继承及实现代码
Jul 06 Javascript
JavaScript中ES6规范中let和const的用法和区别
Aug 06 Javascript
swiperjs实现导航与tab页的联动
Dec 13 Javascript
javascript网页关键字高亮代码
Jul 30 #Javascript
用js生产批量批处理执行命令
Jul 28 #Javascript
javascript+xml技术实现分页浏览
Jul 27 #Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
Jul 26 #Javascript
发一个自己用JS写的实用看图工具实现代码
Jul 26 #Javascript
对JavaScript的eval()中使用函数的进一步讨论
Jul 26 #Javascript
js树形控件脚本代码
Jul 24 #Javascript
You might like
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
jquery 插件开发方法小结
2009/10/23 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python生成词云的实现方法(推荐)
2017/06/13 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
Python while循环使用else语句代码实例
2020/02/07 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
东方电视购物:东方CJ
2016/10/12 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
三分钟演讲稿事例
2014/03/03 职场文书
初中学生评语大全
2014/04/24 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python