CheckBox全选与反选,用JS实现

2012-04-09 03:20:46
要求:点击cb1对cblist1进行选择转换;如果点击cb2就对cblist2进行选择转换。

已有客户端代码:
<asp:CheckBox runat="server" ID="cb1" Checked="true" Text="全选"/>
<S:CheckBoxListControl runat="server" ID="cblist1" RepeatColumns="5"/>

<asp:CheckBox runat="server" ID="cb2" Checked="true" Text="全选"/>
<S:CheckBoxListControl runat="server" ID="cblist2" RepeatColumns="5"/>

已有服务端代码:
cb1.Attributes["onClick"] = "cbOnclick()";
cb2.Attributes["onClick"] = "cbOnclick()";

给这两个加的同一个点击事件,()之间肯定要传值对点击的控件进行区分的。问题就是不知道传什么。还有funtion里面怎么写?
...全文
437 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
2012-04-11
  • 打赏
  • 举报
回复
问题解决了,结贴。
谢谢参与过回答的朋友们。
2012-04-11
  • 打赏
  • 举报
回复
效果出来了。
代码:
cb1.Attributes["onClick"] = "cbOnclick(this,'" + cblist1.ClientInstanceName+ "')";
cb2.Attributes["onClick"] = "cbOnclick(this,'" + cblist2.ClientInstanceName+ "')";


function cbOnclick(x, y) {
xs = document.getElementById(y).getElementsByTagName("input")
for (i = 0; i < xs.length; i++) {
if (xs[i].type == "checkbox") xs[i].checked = x.checked
}
}

就是把传的值由ClientID改为了ClientInstanceName。
之前用不了就是因为document.getElementById(y)取不到值
hch126163 2012-04-10
  • 打赏
  • 举报
回复
分 2个 方法写嘛

要不就传参,区分,控制那个列表
ltcszk 2012-04-10
  • 打赏
  • 举报
回复
你可以根据class来选需要勾哪些

checkall=function(class){
$(':checkbox .'+class).each(function(){
$(this).attr("checked",true);
});
}
2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 3 楼 only1573 的回复:

引用 1 楼 的回复:
cb1.Attributes["onClick"] = "cbOnclick(this,'" + cblist1.ClientID + "')";
cb2.Attributes["onClick"] = "cbOnclick(this,'" + cblist2.ClientID + "')";


function ……
[/Quote]
之前没加上这个this,我刚给它加上了,传的参数是这两个没错了。
我弹出看了下:x:[object HTMLInputElement],y:ContentPlaceHolderRight_cblist1
alert(xs);这个没有弹出。
消息栏提示:网页上有错误。

贴一部分编译后的代码:
<div style="float:left">
<input id="ContentPlaceHolderRight_cb1" name="ctl00$ContentPlaceHolderRight$cb1" checked="checked"
onclick="cblOnclick(this,'ContentPlaceHolderRight_cblist1');" />
<label for="ContentPlaceHolderRight_cb1">全部业务模块</label>
</div>
<div id="div_ContentPlaceHolderRight_cblist1" style="display:inline;">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td nowrap="nowrap">
<table id="ContentPlaceHolderRight_cblist1_chkValue">
<tr>
<td>
<input id="ContentPlaceHolderRight_cblist1_chkValue_0" name="ctl00$ContentPlaceHolderRight$cblist1$chkValue$0" checked="checked" />
<label for="ContentPlaceHolderRight_cblist1_chkValue_0">客户</label>
</td>

<td><input id="ContentPlaceHolderRight_cblist1_chkValue_1" name="ctl00$ContentPlaceHolderRight$cblist1$chkValue$1"/>
<label for="ContentPlaceHolderRight_cblist1_chkValue_1">销售机会</label></td>
.......
</tr>
</table>
.......
2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
全选 function checkboxall(){
$("input[@type='checkbox']").each(function(){
$(this).attr("checked",true);
});

}
[/Quote]

有点类似了,我记得他的代码里也有[],就对这个记忆深刻..还有传两个参数的
孟子E章 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 only1573 的回复:]

引用 1 楼 的回复:
cb1.Attributes["onClick"] = "cbOnclick(this,'" + cblist1.ClientID + "')";
cb2.Attributes["onClick"] = "cbOnclick(this,'" + cblist2.ClientID + "')";


function cbOnclick(x, y) {
xs ……
[/Quote]

看你生成的html里面的代码分布,尤其是CLientID必须使用这个
小步快跑- 2012-04-10
  • 打赏
  • 举报
回复
checkall=function(class){
$(':checkbox .'+class).each(function(){
$(this).attr("checked",true);
});
}
ycproc 2012-04-09
  • 打赏
  • 举报
回复
<script language="JavaScript" type="text/javascript">
function checkall(form){
for (var i=0;i<form.elements.length;i++){
var e = form.elements[i];
if (e.name != 'chkall') e.checked = form.chkall.checked;
}
}
</script>

在你需要的地方onClick="checkall(this.form)"调用即可
色拉油 2012-04-09
  • 打赏
  • 举报
回复
反选

function rcheckboxall(){
$("input[@type='checkbox']").each(function(){
if($(this).attr("checked")){
$(this).attr("checked",false);
}else{
$(this).attr("checked",true);
}
});

}
色拉油 2012-04-09
  • 打赏
  • 举报
回复
全选 function checkboxall(){
$("input[@type='checkbox']").each(function(){
$(this).attr("checked",true);
});

}
色拉油 2012-04-09
  • 打赏
  • 举报
回复
不会是用的伪类选择器吧 $("input:checked")

2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
cb1.Attributes["onClick"] = "cbOnclick(this,'" + cblist1.ClientID + "')";
cb2.Attributes["onClick"] = "cbOnclick(this,'" + cblist2.ClientID + "')";


function cbOnclick(x, y) {
xs = document.ge……
[/Quote]

这个我试了下,单独出来做个示例可以用,但是在我的那个程序里用不了。
S:CheckBoxListControl 是一个自定义用户控件,类似asp:CheckBoxList,但是有些不同的。
之前有人给我写过次,但是代码弄丢了...
我记得他用了JQuery一句搞定的
anzhiqiang_touzi 2012-04-09
  • 打赏
  • 举报
回复
cb1.Attributes["onClick"] = "cbOnclick(this,'" + cblist1.ClientID + "')";
cb2.Attributes["onClick"] = "cbOnclick(this,'" + cblist2.ClientID + "')";


function cbOnclick(x, y) {
xs = document.getElementById(y).getElementsByTagName("input")
for (i = 0; i < xs.length; i++) {
if (xs[i].type == "checkbox") xs[i].checked = x.checked
}
}
孟子E章 2012-04-09
  • 打赏
  • 举报
回复
cb1.Attributes["onClick"] = "cbOnclick(this,'" + cblist1.ClientID + "')";
cb2.Attributes["onClick"] = "cbOnclick(this,'" + cblist2.ClientID + "')";


function cbOnclick(x, y) {
xs = document.getElementById(y).getElementsByTagName("input")
for (i = 0; i < xs.length; i++) {
if (xs[i].type == "checkbox") xs[i].checked = x.checked
}
}

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧