2009-09-03 34 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