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 相关文章推荐
Ext对基本类型的扩展 ext,extjs,format
Dec 25 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
Oct 16 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
jQuery实现按比例缩放图片的方法
Apr 29 jQuery
node.js 发布订阅模式的实例
Sep 10 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
webpack打包html里面img后src为“[object Module]”问题
Dec 22 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 Javascript
JS判断浏览器类型与操作系统的方法分析
Apr 30 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python绘制规则网络图形实例
2019/12/09 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
产品促销活动策划书
2014/01/15 职场文书
校园安全教育广播稿
2014/02/17 职场文书
鼓舞士气的口号
2014/06/16 职场文书
武侯祠导游词
2015/02/04 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
Python借助with语句实现代码段只执行有限次
2022/03/23 Python