8
votes

Comment puis-je désactiver un bouton d'envoi lorsque la case à cocher est décochez la case?

J'ai quelque chose ici qui ne peut pas sembler m'aider à désactiver le bouton Soumettre. Des idées?

<input type="checkbox" checked="checked" id="checky"><a href="#">terms and conditions</a>
<input type="submit" id="postme" value="submit">

$('#checky').click(function(){
    if($(this).checked == false){
         $('#postme').attr("disabled","disabled");   
    } else {
        $('#postme').removeAttr('disabled');
    }
});


0 commentaires

7 Réponses :


13
votes

Vous devez vérifier l'attribut coché et non la méthode.

Fiddle mis à jour: http://jsfiddle.net/8ybu5/7/ xxx

edit

N'oubliez pas que ce code doit être enveloppé à l'intérieur $ (document) .Readady () ou mettre au bas de votre code HTML, sinon votre JS se lie à DOM Éléments qui n'ont pas encore été chargés et seront chargés et échouer.

en l'enveloppant dans .Readady () xxx

Ce code peut être mis n'importe où dans le document et ne sera que déclencher une fois que le DOM est prêt, vous n'avez donc pas à vous soucier des déclencheurs prématurés.

en le mettant au bas de votre document xxx

Si vous le mettez au bas de votre document, vous n'avez pas besoin de l'envelopper dans .Ready () car le JavaScript ne sera pas lu que tout le reste a été chargé . Il y a une amélioration de la performance dans cette méthode (si vous avez beaucoup de JS)

Vous pouvez utiliser l'une quelconque de ces méthodes pour vous assurer que votre JS lie les méthodes de traitement des événements aux éléments DOM uniquement après ils ont fini de chargement.


9 commentaires

+1 Bien qu'il ne vérifie pas la méthode, il vérifiait la propriété sur la collection.


@John Cela fonctionne parfaitement sur le jsfiddle, cependant sur mon IDE le script ne fonctionne même pas. J'ai placé un test d'alerte après la fonction de clic, mais cela ne déclenche même pas. Y a-t-il une raison pour laquelle?


Si vous utilisez Firefox, appuyez sur Ctrl + Shift + J et regardez l'onglet Erreurs pour vérifier les erreurs présentes. En outre, assurez-vous que vous avez inclus JQuery et assurez-vous que cette méthode est enveloppée dans $ (document) .Ready (fonction (fonction () {})


@John Il doit être dans $ (document) .Ready (fonction (fonction () {}? Je ne peux pas simplement le mettre dans la balise normale