2009-09-03 14 views
0

チェックボックスが選択されていない場合、ASP.Netページ上のボタンを無効にするためのコードを与えられました。チェックボックスがオンになっている場合は有効にします。ページが読み込まれ、ボックスがチェックされていないときには、このボタンをうまく無効にしますが、$( '.cb')。change(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

あなたの問題は、あなたの代わりにclickイベントのchangeイベントにハンドラをアタッチしていることです。

asp.netがレンダリング<input>要素であなたの<asp:CheckBox>CssClassを入れて、代わりに含む<span>要素でないことを特徴と別の問題があります。その動作は、私が使用している.netフレームワークのバージョンに固有のものかもしれませんが、レンダリングしたHTMLを調べて、jQueryセレクタが正確であることを確認することがあります。

0

ボタンは、クラス= "CB"

はあなたが

$( 'CB')に警告/にconsole.logの文を入れて試してみましたがあります。(関数を(クリック){ アラート「ここにいる」; setButton }); setButtonへの呼び出しに括弧のペアを追加する

+0

ちょうど私がクリックしていたことに気がつきました。ケンはそれを明示的に指摘した。 – easement

+0

アラートを追加しても機能しますが、setButton関数が呼び出されていないか、正常に動作していません。 –

0

試してみてください。

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

また、あなたはFirebugを使用してコードをデバッグしようとする場合があります。

+0

これはすぐに関数を呼び出し、その戻り値をイベントハンドラとして設定します。 –

+0

申し訳ありません - 少し速かったです。私は間違いを訂正するために編集しました。 –

+0

これは実際にはOPが行った間違いですが)= –