C# ASP.NETC中的JQuery复选框迭代#
我得到了下面的代码,如果没有选中任何复选框,则禁用ASP.Net页面上的按钮,如果选中任何复选框,则启用该按钮。当页面加载且未选中任何复选框时,它将禁用该按钮,但从未点击$('.cb')。当我选中其中一个复选框时,更改(setButton)代码以启用该按钮。有人知道可能出了什么问题吗C# ASP.NETC中的JQuery复选框迭代#,c#,asp.net,jquery,iteration,C#,Asp.net,Jquery,Iteration,我得到了下面的代码,如果没有选中任何复选框,则禁用ASP.Net页面上的按钮,如果选中任何复选框,则启用该按钮。当页面加载且未选中任何复选框时,它将禁用该按钮,但从未点击$('.cb')。当我选中其中一个复选框时,更改(setButton)代码以启用该按钮。有人知道可能出了什么问题吗 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CheckBox ID="CheckBox1" runat="server" CssClass="cb" />
<asp:CheckBox ID="CheckBox2" runat="server" CssClass="cb" />
<asp:Button ID="Button1" runat="server" CssClass="button"
Text="Button" />
</div>
</form>
<script language="jquery" src="js/jquery-1.3.2.js" type="text/javascript">
</script>
<script type="text/javascript" >
$(document).ready(function() {
function setButton() {
$('#Button1').attr('disabled', $('.cb:checked').length === 0);
}
// run check after changing any of the checkboxes
$('.cb').change(setButton);
// initial check
setButton();
});
</script>
$(文档).ready(函数(){
函数setButton(){
$('#Button1').attr('disabled',$('cb:checked')。length==0);
}
//更改任何复选框后运行复选框
$('.cb')。更改(设置按钮);
//初步检查
设置按钮();
});
您的问题是将处理程序附加到
change
事件,而不是click
事件
还有一个问题,asp.net没有将
的CssClass
放在呈现的
元素上,而是放在包含的
元素上。这种行为可能特定于我使用的.net framework版本,但您可以检查呈现的HTML以验证jQuery选择器是否准确。按钮是否有class=“cb”
您是否尝试将alert/console.log语句放入
$('.cb')。单击(函数(){
警觉‘到这里了’;
收进按钮
}); 尝试在调用
setButton
时添加一对括号:
$('.cb').click(function() {setButton()});
另外,您可能还想尝试使用调试代码。刚刚注意到我单击了,您做了更改。Ken明确指出了这一点。添加了警报,但setButton函数没有被调用,或者工作不正常。这将立即调用该函数并将其返回值设置为事件处理程序。抱歉,我有点太快了。我已编辑以更正错误。虽然这实际上也是OP犯的错误=),但他传递的是函数,而不是调用该函数的结果。您当前编辑的代码和他的代码正在执行相同的操作。您只是在匿名函数中包装对
setButton
的调用$('.cb').change(setButton)
与$('.cb').change(setButton())