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 相关文章推荐
多浏览器支持的右下角浮动窗口
Apr 01 Javascript
前端开发必须知道的JS之原型和继承
Jul 06 Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
详解Javascript继承的实现
Mar 25 Javascript
BootStrap按钮标签及基本样式
Nov 23 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
import与export在node.js中的使用详解
Sep 28 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
基于JavaScript伪随机正态分布代码实例
Nov 07 Javascript
JS如何实现基于websocket的多端桥接平台
May 14 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输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP 验证登陆类分享
2015/03/13 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
经验几则 推荐
2006/09/05 Javascript
$()JS小技巧
2007/07/21 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
python利用拉链法实现字典方法示例
2017/03/25 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
维修工先进事迹
2014/05/29 职场文书
药剂专业求职信
2014/06/20 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
关于做家务的心得体会
2016/01/23 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript