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

JavaScript Discussion :

deux input type submit dans un formulaire mais 2 actions différentes


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Points : 54
    Points
    54
    Par défaut deux input type submit dans un formulaire mais 2 actions différentes
    Bonjour,

    j'ai donc un formulaire contenant des champs textes, et une liste déroulante.

    A la fin l'utilisateur valide avec le bouton submit

    voici le code pour la création de mon formulaire
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form id="note_record" name="note_record" method="post" action="notes_validate.php" onsubmit="return verification()">
    comme vous pouvez le voire, j'ai crée une fonction java pour vérifier avant envoi que les champs étaient bien remplis.

    et le bouton de fin:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type=\"submit\";\" style=\"color:red\" value=\"Enregistrer\" />
    Ca marche bien.

    Mon pb c'est que j'ai une liste déroulant. Je souhaiterais que si l'utilisateur ne trouve pas la bonne information dans cette liste il ait la possibilité de la crée en allant sur le formulaire de création. J'ai donc rajouter à coté de cette liste déroulante, un bouton d'envoi vers ce formulaire bis. je suis obligé d'utiliser un submit car je dois récupérer une information qui se trouve dans le formulaire d'origine.

    voicile code rajouté pour le 2nd bouton:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type=\"submit\" onclick=\"action='matiere_new.php'\" style=\"color:red\" value=\"Ici\" />
    et donc pour l'instant si l'utilisateur clique sur ce 2nd bouton submit, le vérification java me bloque car les champs ne sont pas remplis (forcément)

    comment faire? J'espère avoir été assez clair.

    Merci

  2. #2
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Tu remplaces tes deux boutons "submit" par des boutons normaux, et sur le "onclick" tu indiques l'action à effectuer, comme ceci :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form id="note_record" name="note_record" method="post" action="notes_validate.php" onsubmit="return verification()">
    <input name="Bouton" type="button" style="color:red" value="Enregistrer" onclick="this.form.submit();" />
    <input name="Bouton" type="button" style="color:red" onclick="document.location.href='matiere_new.php?mavariable=test'" value="Ici" />
    </form>

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ta question porte plus sur le javascript que sur le HTML .

    Pourquoi ne pas faire ainsi (ça utilise moins de javascript) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form id="note_record" name="note_record" method="post" action="notes_validate.php" onsubmit="return verification()">
        <input name="Bouton" type="submit" style="color:red" value="Enregistrer" />
        <input name="Bouton" type="button" style="color:red" onclick="document.location.href='matiere_new.php?mavariable=test'" value="Ici" />
    </form>
    Il existe encore beaucoup d'autres solutions

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    oui comme modifier l'action dans le onsubmit en fonction de l'appui sur l'un ou l'autre des deux boutons ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Points : 54
    Points
    54
    Par défaut
    merci ça avance,

    je suis parti sur la solution de kerod. c'est sur c'est mieux quand il y a moins de java

    mais je sèche un peu avec cette variable.

    En fait la donnée est stockée dans un input type hidden, nommé "matiere".

    dans le formulaire suivant, je faisais donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mat=($_POST['matiere']);
    j'ai donc essayé

    [CODE]
    <input name="Bouton" type="button" style="color:red" onclick="document.location.href='matiere_new.php?matiere=test'" value="Ici" />
    [CODE]

    le nom de mon contrôle quoi, mais ca ne fonctionne pas.

    De plus est-ce que cette solution est fiable niveau sécurité ?

    sinon la solution de SpaceFrog, est elle aussi simple à mettre en place, si oui comment ?

    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    ben tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     onsubmit="document.forms[0].action=(flag==0)?'page1.php':'page2.php';"

    sinon nomme tes deux boutons submit différemment est teste le isset du post coté php ...

  7. #7
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    C'est pas du POST mais du GET

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Points : 54
    Points
    54
    Par défaut
    oh la... attendez les gars, vous allez trop vite pour moi.
    Je suis pas non plus un expert en dév web.

    tout d'abord, concernant mon pb

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="Bouton" type="button" style="color:red" onclick="document.location.href='matiere_new.php?matiere'" value="Ici" />

    est ce que cela vous parait correct ?

  9. #9
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Oui c'est correct et pour récupérer la valeur il faut utiliser le $_GET et non le $_POST

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Points : 54
    Points
    54
    Par défaut
    Merci encore,

    mais bon ça à pas l'air de marcher.

    pourtant j'ai bien changer par un get.
    c'est pas grave, mais je me rend compte que je peux pas utiliser un get, car le formulaire peut réceptionner des données d'autres formulaire et donc, ça va me poser pb. Désolé, je pense donc que je n'ai qu'une solution c'est de
    modifier l'action dans le onsubmit

    Tu peux être plus explicite spacefrog sur cette solution ?

    Merci beaucoup les gars

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    ben j'ai déja donné un bout au dessus ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="document.forms[0].action=(flag==0)?'page1.php':'page2.php';"

    après il reste jsute à avoir une variable globale sur la page et la modifier sur le onclick de chacun des boutons submit

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Points : 54
    Points
    54
    Par défaut
    je vais paraitre chiant, mais comme je disais tout à l'heure je ne suis pas développeur professionnel.

    ton bout de code je le comprend pas entièrement et ta variable globale, comment changer sa valeur suivant le bouton cliqué ?

  13. #13
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Voici une petite solution :
    Code html : 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
    30
    31
    32
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
     
    <head>
      <title></title>
      <script type="text/javascript">
        function verification(){ alert(''); return true; }
        function lancer(elt)
        {
            if(elt.value == 'Enregistrer' && verification())
            {
                document.forms[0].action='notes_validate.php';
                document.forms[0].submit();
            }
            else
            {
                document.forms[0].action='matiere_new.php';
            }
        }
      </script>
    </head>
     
    <body>
    <form id="note_record" name="note_record" method="post" action="" onsubmit="">
        <input name="Bouton" type="button" style="color:red" value="Enregistrer" onclick="lancer(this)" />
        <input name="Bouton" type="submit" style="color:red" onclick="lancer(this)" value="Ici" />
    </form>
    </body>
     
    </html>

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Points : 54
    Points
    54
    Par défaut
    merci c'est plus clair... enfin presque j'ai juste 1 question:

    - le "elt" d'où vient il ?

    merci Kerod

  15. #15
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    C'est juste une variable.

    De la manière que c'est construit lors du clic tu passes à la fonction une sorte de pointeur vers l'élément cliqué ainsi tu peux faire tes tests en récupérant sa valeur ou autre.

Discussions similaires

  1. aligner deux input type submit
    Par truffrose dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 21/05/2012, 10h23
  2. problème avec deux submit dans un formulaire
    Par lolita2008 dans le forum Struts 1
    Réponses: 1
    Dernier message: 30/04/2008, 16h51
  3. Deux boutons submit dans un formulaire
    Par noakiss dans le forum ASP
    Réponses: 13
    Dernier message: 24/04/2008, 15h01
  4. [Formulaire] Mettre deux submit dans un formulaire
    Par sagitarium dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/11/2006, 20h24
  5. deux bouton submit dans même formulaire
    Par sansouna24 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/05/2006, 11h03

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