分组后的checkbox组内全选与取消的问题

 在一次做医嘱处理的程序时,遇到这样一个问题,要求把每一条医嘱记录审核后才能提交,在审核页面内有若干条医嘱记录,通过选中checkbox审核,其中一些医嘱记录通过┓、┃、┛标识组合成一组,为了防止审核人员在审核医嘱时出现在这样标识的一组医嘱内一些医嘱选中,一些医嘱取消,故设计一个onclick事件,当选中或取消该分组内一条医嘱时,同时选中或取消该分组内的所有医嘱,经考虑,实现方法如下:

 

/*
$Author: softwareboy $
$Date: 2007/12/21 15:20:19 $
$Revision: 1.0.0 $
*/

function  unselectall()
{
    
if (document.myform.chkAll.checked){
      document.myform.chkAll.checked 
= document.myform.chkAll.checked&0;
    }

    
var e = event.srcElement;//取得鼠标点击的元素
    var str = e.value;
    
//分组选中
    if (e.checked == true){
    
for (var i = 0;i<myform.elements.length;i++)//获得当前鼠标选中的元素序号
    {
     
if (myform.elements[i].value == str){
        str 
= str.split("/");
        
var strtemp = str[0];
        
if (strtemp == ""){
          
for (var i = i+1;i<myform.elements.length;i++)//选中所有以┓开头,以┛结尾的所有元素
          {
            myform.elements[i].checked 
= true;
            
var temp = myform.elements[i].value;
                temp 
= temp.split("/");
                temp 
= temp[0];
            
if (temp == ""){
              
break;
            }

          }

        }
  
        
else if (strtemp == "" || strtemp == ""){
          
for (var i = i-1;i >= 0;i--)//当分组符号为┃或者┛时,初始化元素序号为它上面最邻近的第一个┓元素序号
            {
              
var temp = myform.elements[i].value;
                temp 
= temp.split("/");
                temp 
= temp[0];
              
if (temp == ""){
                
break;
              }

            }

          
for (var i = i;i < myform.elements.length;i++)//选中所有以┓开头,以┛结尾的所有元素
            {  
              myform.elements[i].checked 
= true;
              
var temp = myform.elements[i].value;
                  temp 
= temp.split("/");
                  temp 
= temp[0];
              
if (temp == ""){
                
break;
              }

            }

        }

        
else{
          
break;
        }

     }

    }

    }

    
//取消分组选中
    if (e.checked == false){
    
for (var i = 0;i<myform.elements.length;i++)//获得当前鼠标选中的元素序号
    {
     
if (myform.elements[i].value == str){
        str 
= str.split("/");
        
var strtemp = str[0];
        
if (strtemp == ""){
          
for (var i = i+1;i<myform.elements.length;i++)//取消所有以┓开头,以┛结尾的所有元素
          {
            myform.elements[i].checked 
= false;
            
var temp = myform.elements[i].value;
                temp 
= temp.split("/");
                temp 
= temp[0];
            
if (temp == ""){
              
break;
            }

          }

        }
  
        
else if (strtemp == "" || strtemp == ""){
          
for (var i = i-1;i >= 0;i--)//当分组符号为┃或者┛时,初始化元素序号为它上面最邻近的第一个┓元素序号
            {
              
var temp = myform.elements[i].value;
                temp 
= temp.split("/");
                temp 
= temp[0];
              
if (temp == ""){
                
break;
              }

            }

          
for (var i = i;i < myform.elements.length;i++)//取消所有以┓开头,以┛结尾的所有元素
            {  
              myform.elements[i].checked 
= false;
              
var temp = myform.elements[i].value;
                  temp 
= temp.split("/");
                  temp 
= temp[0];
              
if (temp == ""){
                
break;
              }

            }

        }

        
else{
          
break;
        }

     }

    }

    }
 
}


function  CheckAll(form)
{
  
for (var i = 0;i<form.elements.length;i++)
    
{
    
var e = form.elements[i];
    
if (e.Name != "chkAll")
       e.checked 
= form.chkAll.checked;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值