Version complète: sur le forum Webmaster Hub : Griser submit jusque coche du chekbox
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > (X)HTML et CSS
gesualda
Bonjour,

C'est une petite question, mais je sais pas comment faire.

J'aimerai griser dans un formulaire la ligne <input submit> tant que le checkbox qui se trouve juste avant n'est pas coché.

Si quelqu'un pourrait m'orienter, ca me rendrait service.

@++ smile.gif
gesualda
Bon ben j'ai trouvé, alors si ca peut aider quelqu'un voila:


CODE
<head>

<script language="javascript" type="text/javascript">
function ChangeStatut(formulaire) {
if(formulaire.regagree.checked == true) {formulaire.validation.disabled = false }
if(formulaire.regagree.checked == false) {formulaire.validation.disabled = true }
}
</script>

</head>

<body>
<form action="" methed="post">
<input type="checkbox" name="charte_photo" value="valeur" onClick="ChangeStatut(this.form)" /> Valider la charte
<input type="submit" name="validation" value="S'enregistrer" disabled />
</form>
</body>



J'oubliai, il n'est pas de moi, mais tant qu'a faire

@ bientôt et bon week à tous
IMSTP6.gif
Xavier
Petit problème : sans javascript le bouton de validation ne sera jamais activé angry.gif Il faut donc s'arranger pour que le bouton soit désactivé par javascript au chargement

En plus la syntaxe n'est pas du tout correcte, et l'activation ne se fera que dans IE qui est le seul à accepter de telles erreurs de syntaxe :nono:

Bref, permets-moi de te dire que ça ne va pas du tout hypocrite.gif

Bref, quelque chose comme ceci serait plus correct :
CODE
<head>

<script type="text/javascript">
function ChangeStatut() {
var eltCheckbox = document.getElementById("charte_photo");
var eltSubmit = document.getElementById("validation");
if(eltCheckbox.checked == true) {eltSubmit.disabled = false }
if(eltCheckbox.checked == false) {eltSubmit.disabled = true }
}
</script>

</head>

<body onload="ChangeStatut();">
<form action="" methed="post">
<label><input type="checkbox" name="charte_photo" id="charte_photo" value="valeur" onClick="ChangeStatut()" /> Valider la charte</label>
<input type="submit" name="validation" value="S'enregistrer" id="validation" />
</form>
</body>

PS : je ne suis pas convaincu du onload sur le body sad.gif mais je n'ai pas réussi à faire fonctionner un window.onload = ChangeStatut() huh.gif
Xavier
Je savais qu'il y avait un "truc" pour les formulaires !

CODE
<script type="text/javascript">
function ChangeStatut() {
var eltCheckbox = document.forms[0].charte_photo;
var eltSubmit = document.forms[0].validation;
if(eltCheckbox.checked == true) {eltSubmit.disabled = false }
if(eltCheckbox.checked == false) {eltSubmit.disabled = true }
}
</script>
Par contre je n'arrive toujours pas à faire un window.onload. sad.gif

PS : n'oublie pas les <label> pour les textes liés à un input wink.gif
Boo2M0rs0
Bonjour,

CITATION(Xavier @ samedi 25 juin 2005, 22h03)
mais je n'ai pas réussi à faire fonctionner un window.onload = ChangeStatut()  huh.gif
*

Quand tu écrit ce code, cela signifie que tu execute la fonction ChangeStatut tout de suite et que tu attribues sa valeur de retour à window.onload, il faudrait donc écrire:
window.onload = ChangeStatut;
Xavier
Merci Boo2M0rs0 smile.gif
C'est le genre de trucs qui m'échappent encore, mais ça viendra ^_^

Au final

CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">

<head>
    <title>Titre de la page</title>
    <script type="text/javascript">
    function ChangeStatut() {
 var eltCheckbox = document.forms[0].charte_photo;
 var eltSubmit = document.forms[0].validation;
 if(eltCheckbox.checked == true) {eltSubmit.disabled = false }
 if(eltCheckbox.checked == false) {eltSubmit.disabled = true }
    }
    window.onload=ChangeStatut;
    </script>

</head>

<body>
    <form action="page.php" method="post">
 <fieldset>
     <label><input type="checkbox" name="charte_photo" value="valeur" onClick="ChangeStatut()"> Valider la charte</label>
     <input type="submit" name="validation" value="S'enregistrer">
 </fieldset>
    </form>
</body>
</html>
Il me semble que ça devrait fonctionner dans tous les navigateurs wink.gif
(prévoir bien entendu la vérification côté serveur pour ceux qui ont le js désactivé)
Attention il y avait une "coquille", c'est method et pas methed wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.