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='';这样就对了。
一点小结,希望对其他人有帮助。
这里顺便说一下,在普通页面里面我们采用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='';这样就对了。
一点小结,希望对其他人有帮助。
相关文章推荐
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能
- raspberry 3 B安装 berryboot 遇到的问题
- asp.net mvc 特性路由(MapMvcAttributeRoutes)的应用
- ASP.NET中 CheckBox复选框控件的使用
- ASP.NET Calendar日历(日期)控件使用方法
- ASP.NET中Dictionary如何转换为list
- [asp.net mvc]自定义filter
- ASP.NET中BulletedList列表控件使用及详解
- ASP.NET vNext总结:EntityFramework7
- 试图加载格式不正确的程序
- ASP.NET中BulletedList列表控件使用及详解
- ASP.NET Calendar日历(日期)控件使用方法
- ASP.NET中 CheckBox复选框控件的使用
- ASP.NET MVC之分部视图和ChildAction(三)
- aspcms网站访问出现3706错误, 错误描述:未找到提供程序。该程序可能未正确安装,解决的方法。
- ASP.NET Web API从注释生成帮助文档
- Asp.net MVC中关于@Html标签Label、Editor使用
- 一步一步学习ASP.NET 5 (一)-基本概念和环境配置
- Spring AspectJ AOP 完整示例
- asp.net 统计登录的用户数