博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

写js时遇到的一些小问题

Posted on 2010-12-03 14:44  sigo-yr  阅读(341)  评论(0)    收藏  举报

 

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);
}
});
});

 



流量统计