在一次做医嘱处理的程序时,遇到这样一个问题,要求把每一条医嘱记录审核后才能提交,在审核页面内有若干条医嘱记录,通过选中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;
}
}
$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;
}
}