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内容过滤选择器选择元素实例讲解
Apr 18 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
Apr 19 Javascript
jQuery实现的一个自定义Placeholder属性插件
Aug 11 Javascript
JavaScript弹出窗口方法汇总
Aug 12 Javascript
js实现window.open不被拦截的解决方法汇总
Oct 30 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
Jul 10 Javascript
基于zepto.js实现登录界面
Oct 09 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
Vue select 绑定动态变量的实例讲解
Oct 22 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跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
ES6 async、await的基本使用方法示例
2020/06/06 Javascript
Python编程之多态用法实例详解
2015/05/19 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python绘制股票移动均线的实例
2019/08/24 Python
python如何删除文件、目录
2020/06/23 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
竟聘演讲稿范文
2013/12/31 职场文书
六五普法规划实施方案
2014/03/21 职场文书
大学新生军训方案
2014/05/03 职场文书
外国人来华邀请函
2015/01/31 职场文书
施工安全员岗位职责
2015/04/11 职场文书
追悼会悼词大全
2015/06/23 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
Java详细解析==和equals的区别
2022/04/07 Java/Android