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 !!的作用
Dec 04 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
Jan 01 Javascript
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
Jan 24 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
javascript中setAttribute兼容性用法分析
Dec 12 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
Apr 11 Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
jQuery修改DOM结构_动力节点Java学院整理
Jul 05 jQuery
你可能不知道的CORS跨域资源共享
Mar 13 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
Apr 26 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
5.PHP的其他功能
2006/10/09 PHP
php 判断数组是几维数组
2013/03/20 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
python 实现归并排序算法
2012/06/05 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python操作excel的方法
2018/08/16 Python
python调用百度REST API实现语音识别
2018/08/30 Python
解决Python对齐文本字符串问题
2019/08/28 Python
Python流程控制 while循环实现解析
2019/09/02 Python
Python生成器常见问题及解决方案
2020/03/21 Python
奥运会口号
2014/06/13 职场文书
银行授权委托书样本
2014/10/13 职场文书
疾病证明书
2015/06/19 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript