Asp.net js获取CheckBoxlist 和 Radiobuttonlist

今天做了一个项目,其中涉及到多选和单选,一般我们用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='';这样就对了。

 

一点小结,希望对其他人有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值