2009-09-03 5 views
0

J'ai reçu le code ci-dessous pour désactiver un bouton sur une page ASP.Net si aucune des cases n'est cochée, et pour l'activer si des cases sont cochées. Il désactive le bouton lorsque la page est chargée et qu'aucune case n'est cochée, mais ne touche jamais le code $ ('.cb'). Change (setButton) pour activer le bouton lorsque je coche l'une des cases à cocher. Quelqu'un sait ce qui pourrait être faux?itération de case à cocher JQuery dans ASP.Net 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> 

Répondre

1

Votre problème est que vous attacher un gestionnaire à l'événement change au lieu de l'événement click.

Il y a un autre problème dans laquelle asp.net ne met pas le CssClass de votre <asp:CheckBox> sur l'élément rendu <input>, mais plutôt sur un élément contenant <span>. Ce comportement peut être spécifique à la version de framework .net que j'utilise mais vous pouvez inspecter votre HTML rendu pour vérifier que vos sélecteurs jQuery sont précis.

0

-ce que les boutons ont class = "cb"

Avez-vous essayé de mettre en alerte/déclaration console.log dans les

$ ('cb'). Cliquez sur (function() { alerte 'arrivé ici'; setButton });

+0

viens de remarquer que j'avais cliqué et que vous avez changé. Ken l'a souligné explicitement. – easement

+0

Ajout de l'alerte et cela fonctionne, mais la fonction setButton n'est pas appelée, ou ne fonctionne pas correctement. –

0

Essayez d'ajouter une paire de parenthèses sur l'appel à setButton:

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

, vous pouvez également essayer le débogage de votre code à l'aide Firebug.

+0

Appelez la fonction immédiatement et définissez sa valeur de retour en tant que gestionnaire d'événements. –

+0

Désolé - j'étais un peu trop vite. J'ai édité pour corriger l'erreur. –

+0

Bien que ce soit effectivement l'erreur que l'OP a faite aussi =) –