Partage
  • Partager sur Facebook
  • Partager sur Twitter

jQuery et les formulaires

Afficher ou cacher des elements selon le choix d'une liste

Sujet résolu
    10 février 2010 à 18:34:59

    Bonjour,

    Je recontre un probleme avec jQuery...

    J'ai un formulaire et je souhaite qu'en fonction du choix d'une liste, cela affiche ou non certains champs.

    Dans mon exemple, si on indique "Particulier" dans la liste, je souhaite demander les nom et prénom, sinon, si le choix est "Professionnel", je souhaite demander la dénomination et le numéro de tva.

    Je me suis inspiré d'un script similaire que j'avais trouvé, mais c'etait avec des puces, j'ai bêtement remplacé "input[name='type']:checked" par "select[name='type']:selected", mais ca ne fonctionne pas...

    Voici le formulaire en live: http://www.voilou.fr/TEST/testjavascript2.html
    Lien jquery de select: http://api.jquery.com/selected-selector/

    Le code que j'ai pour montrer/cacher les div...

    $(document).ready(function(){
    							 
    jQuery( jQuery("select[name='type']") ).change( function()
    {
      if ( jQuery("select[name='type']:selected" ).val() == "Par" )
      {
        jQuery("#nom").rules("add", "required");
        jQuery("#prenom").rules("add", "required");	
        jQuery("#particulier").show();
    	jQuery("#professionnel").hide();
      }
      else
      {
        /*jQuery("#whathelp").rules("remove", "required");*/
        jQuery("#entreprise").rules("add", "required");	
        jQuery("#professionnel").show();
        jQuery("#particulier").hide();
      }
    });			
    });
    


    Merci pour votre aide :)

    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2010 à 19:49:01

      Ligne 5, ce serait pas plutôt :

      jQuery("select[name='type'] options:selected").val()

      ?
      • Partager sur Facebook
      • Partager sur Twitter
        10 février 2010 à 20:22:30

        Bonsoir Golmote :)

        J'ai testé mais cela ne change rien...

        $($("select option:selected")).change( function()
        {
          if ($("select[name='type'] option:selected").val() == "Par" )
          {
            $("#nom").rules("add", "required");
            $("#prenom").rules("add", "required");	
            $("#particulier").show();
        	$("#professionnel").hide();
          }
          else
          {
            /*jQuery("#whathelp").rules("remove", "required");*/
            $("#entreprise").rules("add", "required");	
            $("#professionnel").show();
        	$("#particulier").hide();
          }
        });			
        });
        


        Merci tout de même :)
        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2010 à 20:26:07

          Et puis pourquoi t'as deux jQuery() imbriqués l'un dans l'autre à la ligne 3 ? o_O
          • Partager sur Facebook
          • Partager sur Twitter
            10 février 2010 à 23:05:51

            2 jQuery?

            Le code actuel est:

            $("select[name='type']").change( function(){
              if ($("option:selected", this).val() == "Par")
              {
                $("#nom").rules("add", "required");
                $("#prenom").rules("add", "required");    
                $("#particulier").show();
                $("#professionnel").hide();
              }
              else
              {
                /*jQuery("#whathelp").rules("remove", "required");*/
                $("#entreprise").rules("add", "required");    
                $("#professionnel").show();
                $("#particulier").hide();
              }
            });
            


            et HTML:

            <tr>
                  <td height="36" align="center" valign="middle"><label for="type">Type :</label></td>
                  <td height="36" valign="middle"><select id="type" name="type">
                    <option value="Par" selected>Particulier</option>
                    <option value="Pro">Professionnel</option>
                  </select></td>
                  <td height="36" align="center" valign="middle">&nbsp;</td>
                  <td height="36" valign="middle">&nbsp;</td>
                </tr>
                <div id="particulier">
                <tr>
                  <td height="36" align="center" valign="middle"><label for="nom">Nom : </label></td>
                  <td height="36" valign="middle"><input id="nom" name="nom" /></td>
                  <td height="36" align="center" valign="middle"><label for="prenom">Pr&eacute;nom : </label></td>
                  <td height="36" valign="middle"><input id="prenom" name="prenom" /></td>
                </tr>
                </div>
                <div id="professionnel">
                <tr>
                  <td height="36" align="center" valign="middle"><label for="entreprise">Raison sociale : </label></td>
                  <td height="36" valign="middle"><input id="entreprise" name="entreprise" /></td>
                  <td height="36" align="center" valign="middle"><label for="tva">Num&eacute;ro TVA : </label></td>
                  <td height="36" valign="middle"><input id="tva" name="tva" /></td>
                </tr>
                </div>
            


            Je désespère..cela fait 3 jours que je bosse sur ce malheureux formulaire lol
            • Partager sur Facebook
            • Partager sur Twitter
              11 février 2010 à 0:55:58

              Mais et puis depuis quand on mets des <div> dans une <table> ? o_O

              Dans une <table> on met seulement et uniquement des <tr> (et encore, normalement on met les <thead>, <tbody> et <tfoot> m'enfin bref).

              Pourquoi tu mets directement les id sur les <tr> ???
              • Partager sur Facebook
              • Partager sur Twitter
                11 février 2010 à 9:18:13

                Effectivement, merci c'était bien ca le problème ! :)

                En fait au départ je voulais pas utiliser de tableau pour la mis en forme du formulaire, avant je le faisait en css...mais là, j'avais les messages d'alerte javascript (champ requis...) qui se mettaient en dessous du label et non derrière le champ input. Du coup, j'avais plus envie de rechercher encore des heures comment faire, vu que j'étais déjà 2 jours dessus...aujourd'hui ca va faire le 4eme !! lol

                Merci et bonne journée :D
                • Partager sur Facebook
                • Partager sur Twitter

                jQuery et les formulaires

                × 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