IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Boutons radios et JQuery


Sujet :

Zend_Form PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut Boutons radios et JQuery
    Bonjour à tous,
    J'ai crée un formulaire contenant plusieurs champs ainsi que plusieurs boutons radios.
    Lorsque je clique sur un des 4 radios, je voudrais afficher et cacher certains éléments de mon formulaire.
    Pour cela, j'ai crée un fichier js qui récupère la valeur du radio selectionné.
    Seulement je ne vois pas comment cacher les elements dans le form comme l'image.
    Voici mon form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public function init() {
            $this->setName('creation oeuvre');
            $this->setEnctype(Zend_Form::ENCTYPE_MULTIPART);
     
            $radio = new Zend_Form_Element_Radio('radio');
            $radio->setLabel('Type de média')
                    ->setMultiOptions(array('Image', 'Son', 'Vidéo', 'Texte'))
                    ->setRequired(true)
                    ->addFilter('StripTags')
                    ->addFilter('StringTrim')
                    ->addValidator('NotEmpty');
     
            $image = new Zend_Form_Element_File('média');
            $image->setLabel('Charger une image:')
                    ->setRequired(true)
                    ->setDestination(APPLICATION_PATH . '/../data/temp')
                    ->addValidator('Count', false, 1)
                    ->addValidator('Size', false, array('max' => '2097152'))// 2Mo
                    ->addValidator('Extension', false, 'jpg,png,gif')
                    ->setDescription("Taille maximum: 2Mo / Extensions autorisées: jpg,png,gif");
     
            $titre = new Zend_Form_Element_Text("titre", array('size' => 25));
            $titre->setLabel('Titre du média')
                    ->setRequired(true)
                    ->addFilter('StripTags')
                    ->addFilter('StringTrim')
                    ->addValidator('NotEmpty')
                    ->addValidator('StringLength', false, 3, 20)
                    ->setDescription("Le titre du média doit avoir entre 3 et 20 caracteres alphanumeriques.");

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Bonjour,
    Du moment que tu as un id ou une class à l'élement tu que veux cacher tu peux faire un show ou un hide.

    exemple avec un id :

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Justement le problème est là.
    L'id de l'élément selectionné, je n'arrive à le récupérer seulement en js.
    Il faudrais en js que je retourne la valeur de l'id et que je transmette cette valeur en php.
    Mais comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      $('input[type=radio][name=radio]').click(function getValueRadio () {
                if ($(this).is(':checked')) {
                    return $(this).val();
                }else{
                    return 1;
                }
    Ensuite dans le form, il faudra que j'ajoute une condition...

  4. #4
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Pourquoi veux tu transmettre a PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    C'est ok, j'ai réussi, mais j'ai un code un peu redondant..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
            $('input[type=radio][name=radio]').click(function getValueRadio () {
                if ($(this).is(':checked') && $(this).val() == 4) {                
                    $('.id4').show();
                    $('.id3').hide();
                    $('.id2').hide();
                    $('.id1').hide();
                }else if ($(this).val() == 2){                
                    $('.id2').show();
                    $('.id1').hide();
                    $('.id3').hide();
                    $('.id4').hide();
                }else if ($(this).val() == 3){                
                    $('.id3').show();
                    $('.id2').hide();
                    $('.id1').hide();
                    $('.id4').hide();
                }else{                
                    $('.id1').show();
                    $('.id2').hide();
                    $('.id3').hide();
                    $('.id4').hide();
                }
            });
    Vous avez une idée pour améliorer celui-ci ?

  6. #6
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Citation Envoyé par RomJo Voir le message
    C'est ok, j'ai réussi, mais j'ai un code un peu redondant..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
            $('input[type=radio][name=radio]').click(function getValueRadio () {
                if ($(this).is(':checked') && $(this).val() == 4) {                
                    $('.id4').show();
                    $('.id3').hide();
                    $('.id2').hide();
                    $('.id1').hide();
                }else if ($(this).val() == 2){                
                    $('.id2').show();
                    $('.id1').hide();
                    $('.id3').hide();
                    $('.id4').hide();
                }else if ($(this).val() == 3){                
                    $('.id3').show();
                    $('.id2').hide();
                    $('.id1').hide();
                    $('.id4').hide();
                }else{                
                    $('.id1').show();
                    $('.id2').hide();
                    $('.id3').hide();
                    $('.id4').hide();
                }
            });
    Vous avez une idée pour améliorer celui-ci ?

    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            $('input[type=radio][name=radio]').click(function getValueRadio () {
     
                if ($(this).is(':checked')) {      
                    $('.id1').hide();
                    $('.id2').hide();
                    $('.id3').hide();
                    $('.id4').hide();
     
                    $('.id'+$(this).val()).show();
            });

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    @5h4r : le dernier hide() ne devrait-il pas être un show() ?
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.id'+$(this).val()).show();
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Si si autant pour moi c est modifié.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Merci, cela fonctionne très bien.
    Dès que je sélectionne un bouton radio, un champ texte s'affiche.
    J'ai plusieurs boutons radios et donc plusieurs champs textes (visible ou non), et je voudrais ajouter un setrequired(true) dans le champ visible et uniquement celui là.
    Comment puis-je faire pour rendre obligatoire uniquement le champ correspondant au radio cliqué?

  10. #10
    Membre confirmé Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    Bonsoir,

    Dernière question très intéressante, j'avais rencontré il y a quelques temps le même problème : ne mettre en required que le champ visible parmi plusieurs champs...

    La solution que j'avais mis en place à l'époque, et c'est de la grosse bidouille je l'accorde, avait été de laisser à required tous les champs (le visible comme les cachés) mais de mettre une valeur par défaut définie (par exemple default_value) pour l'ensemble des champs cachés (et seulement eux) (à faire donc dans le JS en même temps que les .hide()). Lors de la soumission du formulaire, il n'y a alors plus de problème de validation concernant ces champs puisqu'ils sont renseignés... Dans le PHP ensuite, on se contente d'ignorer (ou de faire un traitement spécifique) sur les champs en question portant cette valeur définie...

    Comme je l'ai dit, ça tient plus de la bidouille qu'autre chose, et je suis très curieux de voir si une solution plus élegante existe..

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut
    Tu peux créer une fonction de prévalidation qui en fonction des champs saisi rajoute des setRequired(), etc, puis renvoi vers la fonctions isValid()

  12. #12
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut Précisions...
    Bonjour,

    Pourrais tu stp RomJo mettre en ligne la partie de ton code concernant ce sujet
    (fichier de ton formulaire + fichier javascript) car ayant la même problématique que toi, je n'arrive pas à faire fonctionner le code présent dans la discussion.

    D'avance merci

Discussions similaires

  1. [AJAX] bouton radio et jquery
    Par rewook dans le forum AJAX
    Réponses: 2
    Dernier message: 12/10/2012, 19h04
  2. Réponses: 6
    Dernier message: 26/10/2010, 19h46
  3. Réponses: 6
    Dernier message: 05/03/2010, 15h56
  4. [Jquery] Bouton Radio et input disable
    Par lifty dans le forum jQuery
    Réponses: 1
    Dernier message: 27/07/2009, 22h49
  5. [jquery]Verifier l'état d'un bouton radio
    Par gtraxx dans le forum jQuery
    Réponses: 26
    Dernier message: 03/10/2008, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo