Partage
  • Partager sur Facebook
  • Partager sur Twitter

Desactivation des champs d'un formulaire

Suivant l'état de balise radio (si oui on active, sinon non)

    20 août 2010 à 14:53:35

    Bonjour a tous,

    Je poste pour la premiere fois dans cette section et j'espere que je vais réussir a me faire comprendre :)

    J'ai un formulaire avec plusieurs options et je pause une question à un membre, s'il a son permis moto.
    Si la personne l'a, il peu entrer la date d'obtention. sinon le champ est désactivé...

    J'ai partiellement réussi a faire fonctionner mon script, mais je bute sur quelque chose

    JS et Jquery ne sont pas mon fort et j'essaye d'avancer avec les tutos et démos que je trouve sur des sites.

    Bref, ce qu'il se passe actuellement.

    Lorsque je charge ma page, le champs son désactivé, aucune réponse a ma question (oui -> value=1 non-> value=0) n'est coché...

    Si je clique sur non, les champs sont toujours désactivés. Si je clique sur Oui, ils s'activent, mais si je reclique sur non, ils restent activés...

    Voici mon code html
    <div class="champ_form">
    		<div class="field_name"><label for="permis">Avez vous voter Permis A</label></div>
    		<div class="field_input">
    		<input class="" type="radio" name="permis" id="permis" value="1" /> Oui 
    		<input class="" type="radio" name="permis" id="permis" value="0" /> Non
    	</div>
    	<div id="info_permis"> <!-- toutes les balises dans cette div peuvent etre désactivés -->
    		<div class="champ_form">
    			<div class="field_name"><label for="date_permis">Date d'obtention</label></div>
    			<div class="field_input"><input class="flatinput" type="text" name="date_permis" id="date_permis" size="10" maxlength="10" value="" /> (JJ/MM/AAAA)</div>
    		</div>
    	</div>
    


    et voici le code JS et jquery.
    //code pour desactiver les champs suivant la valeur dun champ radio
    	var permis = $("#permis");
    	// permis topics est optionel
    	var inital = permis.is(":checked");
    	var topics = $("#info_permis")[inital ? "removeClass" : "addClass"]("gray");
    	var topicInputs = topics.find("input").attr("disabled", !inital);
    	// afficher si permi = 1
    	permis.click(function() {
    		topics[this.checked || this.checked == "0" ? "removeClass" : "addClass"]("gray");
    		topicInputs.attr("disabled", !this.checked);
    	});
    


    Voila je bute un peu sur ça.
    Merci d'avance pour votre aide :)


    EDIT:
    J'ai beau essayer toutes les combinaisons possible, je n'y arrive pas, je suis sur qu'il n'y a pas grand chose mais... je touche au but et je n'y arrive pas.

    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2010 à 16:40:17

      Il te faut utiliser une fonction javascript que tu connect sur l'evenement "Onclick" des checkbox. Cette fonction devra tester si la case est cochée ou non, et pourra, en fonction de ce statut, en cocher d'autres...
      Tu n'es pas obliger d'utiliser du JQuery...Je vais regarder dans mes codes sources, je doit avoir cela
      • Partager sur Facebook
      • Partager sur Twitter
        20 août 2010 à 16:49:50

        merci Darkpolo,

        Je précise que j'utilise des inputs de type radio

        Avez vous voter Permis A ? o Oui o Non
        Date d'obtention [__/__/____] (JJ/MM/AAAA)

        Si l'input oui est sélectionné, le champ de obtention est activé et obligatoire.
        Si l'input non est sélectionné, le champ d'obtention est désactivé et par conséquent pas obligatoire


        EDIT: J'ai réussi !

        J'ai modifier mon code en dédoublant le JS je m'explique :
        //code pour desactiver les champs suivant la valeur dun champ radio
        	var permis_oui = $("#permis_oui");
        	var permis_non = $("#permis_non");
        	
        	// permis topics est optionel
        	var inital_non = permis_non.is(":checked");
        	var topics_non = $("#info_permis")[!inital_non ? "removeClass" : "addClass"]("gray");
        	var inital_oui = permis_oui.is(":checked");
        	var topics_oui = $("#info_permis")[inital_oui ? "removeClass" : "addClass"]("gray");	
        	
        	var topicInputs_oui = topics_oui.find("input").attr("disabled", !inital_oui);
        	var topicInputs_non = topics_non.find("input").attr("disabled", !inital_non);
        	// afficher si permi = 1
        	permis_oui.click(function() {
        		topics_oui[this.checked ? "removeClass" : "addClass"]("gray");
        		topicInputs_oui.attr("disabled", !this.checked);
        	});
        	permis_non.click(function() {
        		topics_non[!this.checked ? "removeClass" : "addClass"]("gray");
        		topicInputs_non.attr("disabled", this.checked);
        	});
        


        <div class="champ_form">
        		<div class="field_name"><label for="permis">Avez vous voter Permis A</label></div>
        		<div class="field_input">
        		<input class="" type="radio" name="permis" id="permis_oui" value="1" /> Oui 
        		<input class="" type="radio" name="permis" id="permis_non" value="0" /> Non
        	</div>
        	
        	<div id="info_permis">
        		<div class="champ_form">
        			<div class="field_name"><label for="date_permis">Date d'obtention</label></div>
        			<div class="field_input"><input class="flatinput" type="text" name="date_permis"  id="liste_1" size="10" maxlength="10" value="" /> (JJ/MM/AAAA)</div>
        		</div>
        		</div>
        	</div>
        


        Je pense que c'est grandement optimisable, j'attends vos propositions. :)
        • Partager sur Facebook
        • Partager sur Twitter

        Desactivation des champs d'un formulaire

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown