1、在写<asp:Button ……>的OnClientClick事件时,需要加上return;否则会出现OnClientClick返回false,但仍然执行OnClick事件的情况。
例如:
<asp:Button ID="btnSearch" runat="server" CssClass="button" Text="查找...."OnClientClick="return CheckBox();" OnClick="btnSearch_Click"></asp:Button>
2、window.showModalDialog()方式打开新窗口中,如果其中包含js编辑器或者其他第三方编辑器时,会出现不能编辑的情况,连选中都不行;
至今我还没找到比较好的解决办法,还是换成window.open()方式试试。
3、checkbox全选问题:
html:
< input type ="checkbox" id ="chkAll" onclick ="selectAll()" /> 全选< asp:CheckBoxList ID ="ckblist" runat ="server" RepeatLayout ="Flow" RepeatDirection ="Horizontal" ></ asp:CheckBoxList >
js:
function selectAll()
{
var obj = document.getElementById( " chkAll " );
var ckblist = document.getElementById( " ckblist " );
var chk = ckblist.getElementsByTagName( " input " );
if (obj.checked)
{
for ( var i = 0 ; i < chk.length; i ++ )
{
chk[i].checked = true ;
}
}
else
{
for ( var i = 0 ; i < chk.length; i ++ )
{
chk[i].checked = false ;
}
}
}
4、使用jquery 获取RadioButtonList 中选中值(两种方式):
$( " #RadioButtonList1 " ).find( " input[@checked] " ).val();
$( " input[name='RadioButtonList1']:checked " ).val();
// 设置选中项为红色
jQuery( " input[name^='rblPlayThemePrimary'] " ).each( function () {
if (jQuery( this ).attr( " checked " ) == true ) {
jQuery( this ).next().css( " color " , " #ff0000 " );
}
else {
jQuery( this ).next().css( " color " , " #000000 " );
}
})
CheckboxList是服务器控件,绑定数据容易,服务器端获取选中值也容易。但是生成的静态页面居然没有ListItem的Value值,所以默认情况下用js在页面中是取不到ListItem的值的。至于为什么不显示value值,我也不清楚,本篇给出一个用jQuery获取checkboxlist值的方法。
先看看原始的页面html代码:
< asp:CheckBoxList runat = " server " ID = " listTest " >
</ asp:CheckBoxList >
< input type = " button " id = " btnShow " value = " 显示选中值 " />
if (dt != null && dt.Rows.Count > 0 )
{
foreach (DataRow dr in dt.Rows)
{
// 分别为text值、value值
listTest.Items.Add( new ListItem(dr[ " Title " ].ToString(), dr[ " ID " ].ToString()));
}
}
< table id ="listTest" border ="0" >
< tr >
< td >
< input id ="listTest_0" type ="checkbox" name ="listTest$0" />
< label for ="listTest_0" > 基于jQuery的一个震动效果 </ label >
</ td >
</ tr >
< tr >
< td >< input id ="listTest_1" type ="checkbox" name ="listTest$1" />
< label for ="listTest_1" > 使用css的overflow属性改变缩略图大小 </ label >
</ td >
</ tr >
</ table >
可以看出checkboxlist转换为一个表格的形式,并且其中没有value值。label中的值,即为text值。当点击它时,也可以选中checkbox,这里在选checkbox时提高了用户体验。
下边进入我们的处理过程,首先,在绑定checkboxlist时,为ListItem每个对象添加一个alt属性,值保存对应的value值,代码如下:
if (dt != null && dt.Rows.Count > 0 )
{
foreach (DataRow dr in dt.Rows)
{
// 分别为text值、value值
listTest.Items.Add( new ListItem(dr[ " Title " ].ToString(), dr[ " ID " ].ToString()));
}
// 为ListItem对象添加alt属性,值保存value值
foreach (ListItem li in listTest.Items)
{
li.Attributes.Add( " alt " , li.Value);
}
}
< table id ="Table1" border ="0" >
< tr >
< td >
< span alt ="400" >< input id ="listTest_0" type ="checkbox" name ="listTest$0" />
< label for ="listTest_0" > 基于jQuery的一个震动效果 </ label ></ span >
</ td >
</ tr >
< tr >
< td >< span alt ="398" >< input id ="listTest_1" type ="checkbox" name ="listTest$1" />
< label for ="listTest_1" > 使用css的overflow属性改变缩略图大小 </ label ></ span >
</ td >
</ tr >
</ table >
$(document).ready( function () {
$( " #btnShow " ).click( function () {
var valuelist = "" ; // 保存checkbox选中值
// 遍历name以listTest开头的checkbox
$( " input[name^='listTest'] " ).each( function () {
if ( this .checked) {
// $(this):当前checkbox对象;
// $(this).parent("span"):checkbox父级span对象
valuelist += $( this ).parent( " span " ).attr( " alt " ) + " , " ;
}
});
if (valuelist.length > 0 ) {
// 得到选中的checkbox值序列,结果为400,398
valuelist = valuelist.substring( 0 , valuelist.length - 1 );
}
});
});