您的位置:首页 > 编程语言 > ASP

Asp.net js获取CheckBoxlist 和 Radiobuttonlist

2016-04-15 14:21 741 查看
今天做了一个项目,其中涉及到多选和单选,一般我们用HTML控件中的CheckBox和RadioBox,但竟然是用微软的Asp.net,那为了方便,自然用其自带的控件CheckBoxlist 和 Radiobuttonlist。而这两个控件有个弊端,就是Js的获取不如Html中的CheckBox和RadioBox来得方便,在网上找了一些方法,解决了一些问题,但网上的方法通常只使用与普通网页,而我所做的是继承母板页下的页面,所以解决方法有些出入。
这里顺便说一下,在普通页面里面我们采用document.getElementById(ID)来获取到控件ID,这是可行的,但在继承母板页的页面中这种方法获取不到,需用document.getElementById("<%=id.ClientID%>")来获取。当解决这个问题之后剩下的问题就跟普通页面差不多了。
言归正传,
一、Radiobuttonlist的获取方法
普通网页中document.all(RadiobuttonlistID)和document.getElementById(RadiobuttonlistID)都能获取,母板页中仅document.getElementById("<%=RadiobuttonlistID.ClientID%>")可以获取。
普通页面中下面的方法可以做到取子项值:
var opts=document.all("RadiobuttonlistID");

alert(opts.length);

for (var i = 0; i < opts.length; i++)

{

if (opts[i].checked)

{

alert(opts[i].value);

break;

}

}
而母板页中这个方法不可行,opts.length为没有定义,即取不到子项的值。采用下面办法可以:

var inputs = document.getElementById("<%=RadiobuttonlistID.ClientID %>").getElementsByTagName("INPUT");

for(i = 0;i<inputs.length;i++)

{

if(inputs[i].checked)

{

      alert(inputs[i].value);

}

}
二、CheckBoxlist 的获取方法
原本以为CheckBoxlist 得获取方法跟Radiobuttonlist一样,等真正操作之后,发现有点区别,在于值的获取上有些差别。
var inputs = document.getElementById("<%=mSelect.ClientID %>").getElementsByTagName("INPUT");

for(i = 0;i<inputs.length;i++)

{

if(inputs[i].checked)

{

alert(inputs[i].parentElement.innerText); //值的获取必须采用这种方法,inputs[i].value取不到值。

}

}
三、其他小的细节
1、不知道大家有没有注意<asp:Label />的值通过document.getElementById(ID).value是获取不到的,必须通过document.getElementById(ID).innerText才能获取到。
2、js中声明一个变量必须赋值,否则默认为未定义。比如:
  var res;
  res+='hello';
  这句话的结果是多少呢?hello?错了,是undefinedhello。必须在定义的时候赋值,var res='';这样就对了。

一点小结,希望对其他人有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: