写js时遇到的一些小问题

 

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();
5、设置radiobuttonlist的选中项为红色:
代码
   
     
// 设置选中项为红色
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 " );
}
})
6、jQuery获取checkboxlist的value值:

CheckboxList是服务器控件,绑定数据容易,服务器端获取选中值也容易。但是生成的静态页面居然没有ListItem的Value值,所以默认情况下用js在页面中是取不到ListItem的值的。至于为什么不显示value值,我也不清楚,本篇给出一个用jQuery获取checkboxlist值的方法。

先看看原始的页面html代码:

  
    
< asp:CheckBoxList runat = " server " ID = " listTest " >
</ asp:CheckBoxList >
< input type = " button " id = " btnShow " value = " 显示选中值 " />
下边我们绑定checkboxlist,代码如下:

代码
   
     
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()));
}
}
页面中生成的html代码如下:

代码
   
     
< 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);
}
}
现在,生成的html代码如下:

代码
   
     
< 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 >
从上边可以看出,多了一个span标签,里边alt的值即为我们需要的value值。使用下边的jQuery代码即可获得:

代码
   
     
$(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 );
}
});
});

 



你可能感兴趣的:(js)