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 相关文章推荐
javascript 防止刷新,后退,关闭
Aug 07 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
Javascript 按位取反运算符 (~)
Feb 04 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
Jul 02 Javascript
js选项卡的实现方法
Feb 09 Javascript
用Move.js配合创建CSS3动画的入门指引
Jul 22 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
JavaScript方法_动力节点Java学院整理
Jun 28 Javascript
EasyUI实现下拉框多选功能
Nov 07 Javascript
微信小程序向Java后台传输参数的方法实现
Dec 10 Javascript
Vue实现多页签组件
Jan 14 Vue.js
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
一次编写,随处运行
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Python shelve模块实现解析
2019/08/28 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
工程预算与管理应届生求职信
2013/10/06 职场文书
总经理岗位职责
2013/11/09 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
教师群众路线心得体会
2014/11/04 职场文书
装修安全责任协议书
2016/03/22 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python