2009-09-03 32 views
0

我被赋予了下面的代码来禁用ASP.Net页面上的按钮,如果没有复选框被选中,并且启用它,如果任何复选框被选中。当页面加载并且没有选中框时,它会禁用按钮,但从未点击$('。cb')。更改(setButton)代码以在选中某个复选框时启用该按钮。任何人都知道什么可能是错的?ASP.Net中的JQuery复选框迭代C#

<!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> 

回答

1

您的问题是你要附加一个处理程序的change事件,而不是click事件。

还有另外一个问题,其中asp.net不把你<asp:CheckBox>CssClass渲染<input>元素,而是含有<span>元素。该行为可能特定于我使用的.net框架版本,但您可能会检查呈现的HTML以验证您的jQuery选择器是否准确。

0

执行按钮具有类= “CB”

你尝试过在警报/的console.log语句在

$把( 'CB')。点击(函数(){ 提醒'got here'; setButton });

+0

只是注意到我点击,你有改变。肯明确指出。 – easement 2009-09-03 19:10:01

+0

添加了警报并且可以正常工作,但setButton函数没有被调用,或者无法正常工作。 – 2009-09-03 19:13:31

0

尝试添加一对在电话会议上括号来setButton

$('.cb').click(function() {setButton()}); 

此外,你可能想尝试使用Firebug调试代码。

+0

这将立即调用该函数并将其返回值设置为事件处理函数。 – 2009-09-03 19:26:03

+0

对不起 - 我有点太快了。我编辑过纠正错误。 – 2009-09-03 19:32:09

+0

尽管这实际上是OP所犯的错误=) – 2009-09-03 19:32:45