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 :

Transormer un lien bouton submit avec nom et valeur ?


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut Transormer un lien bouton submit avec nom et valeur ?
    Bonjour,

    Pour transformer un lien en bouton de type submit, c'est à ma portée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p><a href="#" name="choix" onClick="document.forms[0].submit();">Mon lien qui est un bouton</a></p>
    Maintenant, si je veux affecter à ce lien-bouton, un nom et une valeur, de façon à obtenir l'équivalent de <input type="submit" name="choix" value="Mon lien qui est un bouton">, est-ce possible, et si oui MERCI d'avance de m'indiquer la piste.

    L'intérêt est qu'il serait plus facile d'affecter des styles, et notamment des background-image, à des liens plutôt qu'à des boutons.

  2. #2
    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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    une variable globale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var balise=escape("<input type=\"submit\" value=\"mon lien qui est devenu un   bouton submit\" />")
     
    onclick="this.outerHTML=unescape(balise)"
    à condition que le lien soit entre les balises form...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ben ton "name"tu l'as déjà défini;
    par contre, tu remplaces value par firstChild.data

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    MERCI beaucoup de vos pistes.

    Je vais explorer tout ça.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Je commence par expérimenter la méthode de Javatwister, qui me paraît être la plus simple, du moins pour moi.
    J'ai construit le micro-test suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html>
    <form method="post" action="test.php">
    <p><a href="#" name="choix" firstChild.data="Bouton Un" onClick="document.forms[0].submit();">Bouton Un</a></p>
    <p><a href="#" name="choix" firstChild.data="Bouton Deux" onClick="document.forms[0].submit();">Bouton Deux</a></p>
    </form>
     
    <?php
    if (!isSet ($_POST['choix'])) {echo "raté";}
    else {echo $_POST['choix'];}
    ?>
     
    </html>
    Bon, c'est toujours raté, la variable POST n'est pas transmise comme je l'espérais.

    Si vous pouvez me dire ce qui cloche dans le code, MERCI d'avance.

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ah non, y a un malentendu firstChild.data est la propriété qui renvoie le texte du lien!

    tu veux récupérer sur le serveur la référence du lien cliqué, c'est ça?

    dans ce cas-là, tu es obligé de transmettre le texte du lien à un champ caché...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="hidden" name="cach" />
    <p><a href="#" onclick="document.forms[0].cach=this.firstChild.data;document.forms[0].submit();">Bouton Deux</a>
    </p>
    sur la page de traitement, $_POST['cach'] a pour valeur le texte du lien choisi

    mais bon,arrête-moi si ce n'est pas du tout ça que tu veux;

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Merci de ta réponse.

    Oui, c'est ça, je veux récupérer la valeur du lien cliqué, plus les autres valeurs du formulaire.
    Ensuite, c'est du genre :
    if ($cach == 'Bouton Un') {... faire ci de $contenu...}
    elseif ($cach == 'Bouton Deux') {... faire ça de $contenu...}

    J'ai construit ce nouveau test (test.php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <html>
    <form method="post" action="test.php">
    <p><input type="hidden" name="cach"></p>
    <p><input type="text" name="contenu" Col="30">Votre texte ?</p>
    <p><a href="#" onclick="document.forms[0].cach=this.firstChild.data;document.forms[0].submit();">Bouton Un</a></p>
    <p><a href="#" onclick="document.forms[0].cach=this.firstChild.data;document.forms[0].submit();">Bouton Deux</a></p>
    </form>
     
    <?php
    print_r ($_POST);
    ?>
     
    </html>
    Bon, je transmets bien ma variable "contenu", mais pas ma variable "cach"...


    Le test est en ligne à l'adresse :

    http://www.pharmimmo.com/test.php

    Si tu peux continuer à me guider pour transmettre la varaible "cach", MERCI encore d'avance.

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ah oui excuse-moi, j'ai oublié "value" dans la ligne précédente

    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="document.forms[0].cach.value=this.firstChild.data

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    MERCI BEAUCOUP,

    Le test marche, à présent !

    Pour moi, l'intérêt est le suivant :

    1) Les liens sont beaucoup plus faciles à styler que les boutons (certains navigateurs n'acceptent pas les styles affectés au balises INPUT, et de toutes façons il est à ma connaissance impossible d'envoyer des images en background dans les INPUT, donc tu es obligé d'avoir des <INPUT type="image"> qui sont très lourds à gérer).

    2) Dès qu'il y a un formulaire, mes liens de navigation sont transformés en boutons, ce qui permet de toujours conserver les données saisies par le client.
    Par exemple, sur une page de formulaire d'identification, tu transformes le lien "Contactez-nous" en bouton.
    L'utilisateur saisit la moitié du formulaire, il lui prend l'envie de t'écrire, tu conserves toutes les données qu'il a déjà saisies pour les restituer quand il aura envoyé son mail, je trouve ça poli.

    Et tant pis pour les 10 % de demeurés qui ont désactivé javascript sur leurs navigateurs, non ?

    MERCI beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. demande d'aide pour modifier un bouton submit avec rollover
    Par carmen256 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/12/2008, 17h01
  2. Liens à la place de bouton submit avec value
    Par saith dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/09/2007, 11h42
  3. Bouton submit avec bordure
    Par ero-sennin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/01/2007, 12h50
  4. changer le style d'un bouton submit avec du javascript
    Par ipeteivince dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/08/2006, 15h44
  5. Formulaire et bouton submit avec image mapée
    Par dody dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/12/2004, 16h00

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