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 相关文章推荐
基于JQuery的一句话搞定手风琴菜单
Sep 14 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
jQuery结合ajax实现动态加载文本内容
May 19 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
Oct 23 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
Oct 11 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
JS实现快速比较两个字符串中包含有相同数字的方法
Sep 11 Javascript
three.js利用卷积法如何实现物体描边效果
Nov 27 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
vue中实现弹出层动画效果的示例代码
Sep 25 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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
Python2.x中文乱码问题解决方法
2015/06/02 Python
python面试题小结附答案实例代码
2019/04/11 Python
python实现小球弹跳效果
2019/05/10 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python自动发微信监控报警
2019/09/06 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
环境科学专业个人求职信
2013/12/15 职场文书
小学教师节活动方案
2014/01/31 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
Golang map映射的用法
2022/04/22 Golang