tax
级别: 入门弟子


精华: 0
发帖: 2
威望: 2 点
财富: 10 K币
贡献值: 0 点
注册时间:2008-03-23
最后登录:2008-04-26

 checkbox级联

下面这段js是有关checkbox的父子级联,现在我想要如果一个子checkbox是disabled,则级联对这个子checkbox不起作用,在下面这段js的基础上如何作修改呀?
小弟对javascript不是很熟悉呀,请教了!
function CheckboxGroup(){
    var arrelement = document.all;
    var i=0;
    while(i <arrelement.length){
        var forgroupattrib = arrelement.getAttribute('forcheckboxgroup');
        if(forgroupattrib != null && forgroupattrib != ''){
            arrelement.setAttribute('groupmember',_getGroupMember(arrelement));
            if(arrelement.tagName.toLowerCase() == 'input' && arrelement.type == 'checkbox'){
                arrelement.onclick=function(){
                    var groupmember = this.getAttribute('groupmember');
                    var i = 0;
                    while(i <groupmember.length){
                        groupmember.checked = this.checked;
                        i++;
                    }

                }
            }
            _setState(arrelement);
        }
        i++;
    }
}

function _getGroupMember(o){
    var groupname = o.getAttribute('forcheckboxgroup');
    var items = new Array;
    var inputs = document.getElementsByTagName('input');
    var i=0;
    while(i <inputs.length){
        if(inputs.type == 'checkbox'){
            var groupattrib = inputs.getAttribute('group');
            if(groupattrib == groupname){
                items[items.length] = inputs;
                var master = inputs.getAttribute('groupmaster');
                if (master == null) {
                    master = new Array;
                    master[0] = o.uniqueID;
                    inputs.setAttribute('groupmaster', master);
                }
                else{
                    master[master.length] = o.uniqueID;
                }
                inputs.onpropertychange = function(){
                    if (event.propertyName == 'checked') {
                        var arro = this.getAttribute('groupmaster');
                        var i = 0;
                        while (i  < arro.length) {
                            _setState(document.getElementById(arro));
                            i++;
                        }
                    }
                }
            }
        }
        i++;
    }
    return items;
}

function _setState(o){
    var master = o;
    if(master!=null){
        var chkselall = true;
        var chknosel = true;
        var groupmember = master.getAttribute('groupmember');
        var i = 0;
        while(i <groupmember.length){
            if(chkselall)chkselall = groupmember.checked;
            if(chknosel)chknosel = !groupmember.checked;
            i++;
        }
        if(master.tagName.toLowerCase() == 'input'&&master.type=='checkbox'){
            if (chkselall) {
                master.indeterminate = false;
                master.checked = true;
            }
            if (chknosel) {
                master.indeterminate = false;
                master.checked = false;
            }
            if(!chkselall&&!chknosel)master.indeterminate = true;
        }
        else{
            master.disabled = chknosel;
        }
    }
}

window.attachEvent('onload',CheckboxGroup);

在HTML中显示
  <input type="checkbox" forcheckboxgroup="abc">A <br>
    <input type="checkbox" group="abc">a <br>
    <input type="checkbox" group="abc">b <br>
    <input type="checkbox" group="abc" disabled="disabled">c <br>
现在在勾选A时,a,b都选上,但c不能被勾选。
不能去掉c的group="abc"这个属性
顶端 Posted: 2008-04-25 10:13 | [楼 主]
帖子浏览记录 版块浏览记录
IECN社区 » JavaScript/Ajax

Time now is:12-03 15:03, Gzip disabled 京ICP备06069722号
Powered by PHPWind v6.3.2 Certificate Code © 2003-08 PHPWind.com Corporation