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 相关文章推荐
asp.net和asp下ACCESS的参数化查询
Jun 11 Javascript
ExtJs grid行 右键菜单的两种方法
Jun 19 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
Apr 16 Javascript
JavaScript错误处理
Feb 03 Javascript
浅谈js中StringBuffer类的实现方法及使用
Sep 02 Javascript
D3.js实现直方图的方法详解
Sep 25 Javascript
js链表操作(实例讲解)
Aug 29 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
Sep 20 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 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 fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
用python读取xlsx文件
2020/12/17 Python
python opencv肤色检测的实现示例
2020/12/21 Python
Python try except else使用详解
2021/01/12 Python
Delphi软件工程师试题
2013/01/29 面试题
实习生自我鉴定
2013/12/12 职场文书
工地安全质量标语
2014/06/07 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记