Aide breezingform

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Aide breezingform

    Bonjour, j'ai un formulaire avec 4 pages
    - page 1 : saisie de nombre et calcul d'une valeur puis soumission du formulaire
    si cette valeur est < 3 je voudrais afficher un message contenu page 2
    si cette valeur est < 6 un autre message contenu page 3
    sinon un troisième message contenu page4 si la valeur est autre
    j'ai mis ce petit programme dans "soumettre des pièces" pour rediriger vers les pages 2,3,ou 4
    Mais cela ne marche pas, après soumission la page 1 s'affiche à nouveau

    $this->execPieceByName('ff_InitLib');
    $valeur = Number(ff_getElementByName('result').value);
    if $valeur < 3
    JFactory::getApplication()->redirect('index.php?option=com_breezingforms&ff_n ame=Dom&ff_page=2&Itemid=67');
    elseif $valeur < 6
    JFactory::getApplication()->redirect('index.php?option=com_breezingforms&ff_n ame=Dom&ff_page=3&Itemid=67');
    else
    JFactory::getApplication()->redirect('index.php?option=com_breezingforms&ff_n ame=Dom&ff_page=4&Itemid=67');

    Une idée ??
    merci !!

  • #2
    Re : Aide breezingform

    Bonjour,

    Pour ce type d'action, les pîèces de formulaire (code PHP exécuté sur lle serveur) ne sont pas adaptées.

    Il faut utiliser des scripts de validation, et les redirections JavaScript intégrées.http://crosstec.de/support/index.php...tclient&id=219 pour un tuto de base.
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Aide breezingform

      Merci jisse03
      Je me suis inspiré du tuto. N'étant pas tout à fait dans ce cadre (mon champ est calculé avec les données entrées) j'ai créé un bouton soumettre avec ce script
      function ff_soum_action(element, action)
      {
      switch (action) {
      case 'click':
      if (ff_getElementByName('result').value) < 3
      {ff_switchpage(2);}
      else if (ff_getElementByName('result').value) < 6
      {ff_switchpage(3);}
      break;
      default:;
      } // switch
      } // ff_soum_action

      Il ne se passe rien au click sur ce bouton
      Merci

      Commentaire


      • #4
        Re : Aide breezingform

        Tu as des erreurs JavaScript... et la valeur est une chaîne, donc:
        Code:
        unction ff_soum_action(element, action)
         {
           switch (action) {
             case 'click':
               if ( parseInt( ff_getElementByName('result').value ) < 3 )
                 { ff_switchpage(2); break; }
               else if ( parseInt( (ff_getElementByName('result').value ) < 6 )
                  { ff_switchpage(3); break; }
              default:;
           } // switch
         } // ff_soum_action
        devrait mieux passer
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : Aide breezingform

          Merci, ca tourne
          Dernière question : peut on facilement intégrer un test ff_validate dans ce script ?
          j'ai essayé ; les infos de contrôle s'affichent mais sur les pages suivantes, pas sur la page 1 !!
          Merci

          Commentaire


          • #6
            Re : Aide breezingform

            Qu'est-ce qu etu appelles une validation ff_validate ? Et dans les paramètres du formulaire, la validation est globale ou par page ?
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Aide breezingform

              je voudrais, en cliquant sur un seul bouton :
              - valider les saisies de la page 1
              - lancer le script
              Tout ce que j'arrive à faire avec ff_validate_page, c'est valider ma page, mon script ne se lance pas
              est ce possible avec un seul bouton ? Je ne vois pas dans les paramètres ou se trouve la validation page/globale. Je n'a pas activé les boutons soumetre/page suivante/annuler
              merci

              Commentaire


              • #8
                Re : Aide breezingform

                Donc, dans un formulaire multipages, tu voudrais gérer toi-même la pagination... C'est faisable, mais avec un peu plus de code.

                Mais si tu n'as que 2 ou 3 conditions, pourquoi ne pas utiliser une seule page suivante, avec les règles de visibilité ? C'ets à la fois plus élégant et plus pratique.
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : Aide breezingform

                  J'y avais pensé et j'ai galéré, n'arrivant pas à faire fonctionner turn on/turn off à partir d'un champ calculé nommé result et du style
                  turn on section xxx if element result is <6
                  turn on section yyy if element result is <3
                  etc
                  Merci pour l'aide

                  Commentaire


                  • #10
                    Re : Aide breezingform

                    Ta syntaxe est incorrecte. Pour une plage de valeurs, tu dois utiliser une regex et non les symboles < ou >

                    Exemple
                    Code:
                    turn on section yyy if element result is [0-3]$
                    turn on section xxx if element result is [0-6]$
                    est syntaxiquement correct.
                    Dernière édition par jisse03 à 21/01/2015, 14h11
                    Pas de demande de support par MP.
                    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                    Commentaire


                    • #11
                      Re : Aide breezingform

                      j'ai fini par trouver !!

                      function ff_valid_action(element, action)
                      {
                      switch (action) {
                      case 'click':
                      error = ff_validation(ff_currentpage);
                      if (error != '') {
                      bfShowErrors(error);

                      ff_validationFocus('');
                      }
                      else {
                      JQuery(".bfErrorMessage").html('');
                      JQuery(".bfErrorMessage").css("display","none");
                      val = parseInt(ff_getElementByName('resultat').value);
                      }
                      if ( val < 3 )
                      {ff_switchpage(2); break;}
                      else if ( val < 6 )
                      {ff_switchpage(3); break;}
                      else
                      {ff_switchpage(4); break;}

                      break;
                      default:;
                      } // switch
                      } // ff_valid_action


                      Le premier if contrôle les saisies, le 2 redirige sur les page suivant le calcul effectué dans le champ result
                      dernierer souci : comment changer le "." en "," pour les décimales ?
                      Merci

                      Commentaire

                      Annonce

                      Réduire
                      Aucune annonce pour le moment.

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X