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学习网址备忘
May 29 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
Nov 12 Javascript
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
JS实现让访问者自助选择网页文字颜色的方法
Feb 24 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
通过bootstrap全面学习less
Nov 09 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
慕课网题目之js实现抽奖系统功能
Sep 19 Javascript
design vue 表格开启列排序的操作
Oct 28 Javascript
javascript 数组(list)添加/删除的实现
Dec 17 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
Zend引擎的发展 [15]
2006/10/09 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python提取页面内url列表的方法
2015/05/25 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python字典对象实现原理详解
2019/07/01 Python
django 简单实现登录验证给你
2019/11/06 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
python实现指定ip端口扫描方式
2019/12/17 Python
python实现堆排序的实例讲解
2020/02/21 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
深圳茁壮笔试题
2015/05/28 面试题
医药专业应届毕业生求职信范文
2014/01/01 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
暖春观后感
2015/06/08 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
nginx请求限制配置方法
2021/07/09 Servers
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL