Asp.net伺服器端控制項CheckBoxList在用戶端沒有產生value值,所以就想在用戶端通過JS獲得選中項就很麻煩了。
迫於無奈,只能寫了以下的代碼。比較通用,適合於CheckBoxList的屬性RepeatLayout為Flow和Table,屬性RepeatDirection為Horizontal和Vertical
objID為伺服器端控制項在用戶端產生的ID
通用版本(不依賴任何類庫)
function GetCheckBoxListValue(objID)
{
var v = new Array();
var CheckBoxList = document.getElementById(objID);
if(CheckBoxList.tagName == "TABLE")
{
for(i=0;i<CheckBoxList.rows.length;i++)
for(j=0;j<CheckBoxList.rows[i].cells.length;j++)
if(CheckBoxList.rows[i].cells[j].childNodes[0])
if(CheckBoxList.rows[i].cells[j].childNodes[0].checked==true)
v.push(CheckBoxList.rows[i].cells[j].childNodes[1].innerText);
}
if(CheckBoxList.tagName == "SPAN")
{
for(i=0;i<CheckBoxList.childNodes.length;i++)
if(CheckBoxList.childNodes[i].tagName == "INPUT")
if(CheckBoxList.childNodes[i].checked==true)
{
i++;
v.push(CheckBoxList.childNodes[i].innerText);
}
}
return v;
}
Asp.net Ajax版本(依賴Asp.net Ajax類庫支援)
function GetCheckBoxListValue(objID)
{
var v = new Array();
var CheckBoxList = $get(objID);
if(CheckBoxList.tagName == "TABLE")
{
for(i=0;i<CheckBoxList.rows.length;i++)
for(j=0;j<CheckBoxList.rows[i].cells.length;j++)
if(CheckBoxList.rows[i].cells[j].childNodes[0])
if(CheckBoxList.rows[i].cells[j].childNodes[0].checked==true)
Array.add(v,CheckBoxList.rows[i].cells[j].childNodes[1].innerText);
}
if(CheckBoxList.tagName == "SPAN")
{
for(i=0;i<CheckBoxList.childNodes.length;i++)
if(CheckBoxList.childNodes[i].tagName == "INPUT")
if(CheckBoxList.childNodes[i].checked==true)
{
i++;
Array.add(v,CheckBoxList.childNodes[i].innerText);
}
}
return v;
}