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 :

plusieurs boutons, un prompt


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Par défaut plusieurs boutons, un prompt
    Bonjour à tous,
    nouvelle arrivée parmi vous, et en recherche d'aide

    mon petit code consiste à créer des boutons de désabonnement d'une façon générique (selon le nombre de produis auxquels on est abonné)...
    En cliquant qur un de ces boutons, un code javascript est appelé et affiche un prompt dans lequel on devra saisir le raison de désabonnement.

    Le problème est le suivant : seul le premier bouton est reconnu par les modification faite dans la fonction javascript.

    Voici le code (il est appelé chaque fois qu'on crée un bouton) :
    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
     
    <script type="text/javascript">
     
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'{SUBSCRIPTION_LABEL}",'raison de désabonnment');
    	if (saisie!=null) {
    		document.forms["frm_crmaction"].frm_action_raison_Unsubscribe.value = saisie;
    		document.forms["frm_crmaction"].submit();
    	}
    }
    </script>
     
    <form name="frm_crmaction" id="frm_crmaction" onSubmit="" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="{SUBSCRIPTION_ID}">
    <input type=hidden name="frm_action_packid" value="{SUBSCRIPTION_PACKID}">
    <input type=hidden name="frm_action_raison_Unsubscribe" value="unknown raison">
    <input type=submit value="Unsubscribe to {SUBSCRIPTION_LABEL} " name="frm_crmaction_submit" id="frm_crmaction_submit" OnClick="Confirm_unsubscription();">
    </form>
    Merci bien d'avance.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    2 points :car prompt() renvoie true ou false.
    et
    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
    <script type="text/javascript">
    
    function Confirm_unsubscription() {
    var saisie = prompt("Voulez vous vraiment annuler l'{SUBSCRIPTION_LABEL}",'raison de désabonnment');
    if (saisie) {
    document.forms["frm_crmaction"].frm_action_raison_Unsubscribe.value = saisie;
    }
    return saisie;
    }
    </script>
    
    <form name="frm_crmaction" id="frm_crmaction" onsubmit="return Confirm_unsubscription();" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="{SUBSCRIPTION_ID}">
    <input type=hidden name="frm_action_packid" value="{SUBSCRIPTION_PACKID}">
    <input type=hidden name="frm_action_raison_Unsubscribe" value="unknown raison">
    <input type=submit value="Unsubscribe to {SUBSCRIPTION_LABEL} " name="frm_crmaction_submit" id="frm_crmaction_submit">
    </form>
    Il ne faut pas faire les contrôles de formulaires sur le onclick du bouton submit, mais sur le onsubmit du form (qui est prévu pour)

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Par défaut Re : plusieurs boutons, un prompt
    Merci bien pour ta réponse E.Bzz
    j'étais agréablement surprise par une réponse si rapide

    malheureusement...ça ne marche toujours pas

    Pour commencer :
    j'avais trouvé sur le net que prompt retourne null si rien n'est saisie, sinon, il retourne le message saisie...et justement j'en ai besoin de ce message pour l'affecter au champ 'rm_action_raison_Unsubscribe'...
    En fait, même après avoir fait les modifications que t'as signalé , j'ai l'impression que à partit du second bouton, la ligne " document.forms["frm_crmaction"].frm_action_raison_unsubscribe.value = saisie;" ne sert plus à rien, la valeur du champ n'est pas modifiée.

    et encore Merci

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par nawara Voir le message
    j'avais trouvé sur le net que prompt retourne null si rien n'est saisie, sinon, il retourne le message saisie...et justement j'en ai besoin de ce message pour l'affecter au champ 'rm_action_raison_Unsubscribe'...
    Oui, c'est ma faute : j'ai confondu prompt() et confirm()
    (sûrement à cause du nom de ta fonction)
    Alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
     
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'{SUBSCRIPTION_LABEL}",'raison de désabonnment');
    	if (saisie!=null) {
    		document.forms["frm_crmaction"].elements['frm_action_raison_Unsubscribe'].value = saisie;
    return true;
    	}
    else return false;
    }</script>
    Les autres modifications (onsubmit="...") sont à conserver.

    A+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Par défaut
    re bonjour
    c'est encore moi

    et encore une fois pour te dire : ça ne marche pas
    En fait, :
    document.forms["frm_crmaction"].elements['frm_action_raison_Unsubscribe'].value
    document.forms["frm_crmaction"].frm_action_raison_Unsubscribe.value
    document.forms["frm_crmaction"].elements[2].value
    sont trois façons légitimes et donnent le même résultat
    D'ailleurs, avec le premier bouton ça modifie bien le champ, mais ça foire à partir du second bouton
    j'ai même essayé :
    var obj = document.getElementByName("frm_action_raison_unsubscribe")
    obj.value = "meassage";

    pareil, le premier bouton nickel, le reste vide!
    à mon avis, ça devrai être un problème d'identification, le javascript assigne ces champs au premier bouton et non pas à celui cliqué...je ne sais pas

    je regarde encore, si t'as des idées...surtout n'hésite pas
    Merci

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par nawara Voir le message
    document.forms["frm_crmaction"].elements['frm_action_raison_Unsubscribe'].value
    document.forms["frm_crmaction"].frm_action_raison_Unsubscribe.value
    document.forms["frm_crmaction"].elements[2].value
    sont trois façons légitimes et donnent le même résultat
    Seule la 1° est recommandée par le W3C.
    La 2° est obsolète (de même que document.name_du_form....)
    La 3° est ambigüe car ce n'est pas toi qui contrôle l'ordre dans lequel sont géré ("classé") les éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var obj = document.getElementByName("frm_action_raison_unsubscribe")
    obj.value = "meassage";
    Erreur de syntaxe ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var obj = document.getElementsByName("frm_action_raison_unsubscribe")[0];
    obj.value = "meassage";
    Est-ce que, par hasard, ton <form> serait dupliquée dans ta page ?
    Auquel cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms["frm_crmaction"].elements['frm_action_raison_Unsubscribe']
    te renverrait un tableau d'éléments au lieu de l'élément attendu, et du coup, ton code tel qu'écrit, ne peut pas fonctionner ...

    A+

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Par défaut on y est presque
    BRAVO! ...mais pas encore terminé
    je m'explique
    Le code n'était pas dupliqué, mais le formulaire si, puisque appelé pour la création de chaque bouton...du coup le code source de ma page avait cette tête :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <script type="text/javascript">
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'abonnement gas fr annuel",'raison de désabonnment');
    	if (saisie != null) {
    		document.forms["frm_crmaction"].elements['frm_action_raison_unsubscribe'].value = saisie;
    		return true;
    	}
    	else
    		return false;
    }
    </script>
    
    <form name="frm_crmaction" id="frm_crmaction" onSubmit="return Confirm_unsubscription();" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="20">
    <input type=hidden name="frm_action_packid" value="516">
    
    <input type=hidden name="frm_action_raison_unsubscribe" value="unknown raison">
    <input type=submit value="Unsubscribe to abonnement gas fr annuel " name="frm_crmaction_submit" id="frm_crmaction_submit" >
    </form>
    
    <script type="text/javascript">
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'Abonnement Radars FR Annuel",'raison de désabonnment');
    	if (saisie != null) {
    		document.forms["frm_crmaction"].elements['frm_action_raison_unsubscribe'].value = saisie;
    		return true;
    	}
    	else
    		return false;
    }
    </script>
    
    <form name="frm_crmaction" id="frm_crmaction" onSubmit="return Confirm_unsubscription();" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="2">
    <input type=hidden name="frm_action_packid" value="376">
    <input type=hidden name="frm_action_raison_unsubscribe" value="unknown raison">
    <input type=submit value="Unsubscribe to Abonnement Radars FR Annuel " name="frm_crmaction_submit" id="frm_crmaction_submit" >
    </form>
    J'ai ajouté une balise pour les distinguer...comme ça marchait toujours pas, j'ai fait pareil pour le nom du formulaire...ce qui donne :
    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
    30
    31
    32
    33
    34
    35
    36
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'abonnement gas fr annuel",'raison de désabonnment');
    	if (saisie != null) {
    		document.forms["frm_crmaction_20"].elements['frm_action_raison_unsubscribe_20'].value = saisie;
    		return true;
    	}
    	else
    		return false;
    }
    </script>
     
    <form name="frm_crmaction_20" id="frm_crmaction_20" onSubmit="return Confirm_unsubscription();" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="20">
    <input type=hidden name="frm_action_packid" value="516">
     
    <input type=hidden name="frm_action_raison_unsubscribe_20" value="unknown raison">
    <input type=submit value="Unsubscribe to abonnement gas fr annuel " name="frm_crmaction_submit" id="frm_crmaction_submit" >
    </form>
     
    <script type="text/javascript">
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'Abonnement Radars FR Annuel",'raison de désabonnment');
    	if (saisie != null) {
    		document.forms["frm_crmaction_2"].elements['frm_action_raison_unsubscribe_2'].value = saisie;
    		return true;
    	}
    	else
    		return false;
    }
    </script>
     
    <form name="frm_crmaction_2" id="frm_crmaction_2" onSubmit="return Confirm_unsubscription();" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="2">
    <input type=hidden name="frm_action_packid" value="376">
    <input type=hidden name="frm_action_raison_unsubscribe_2" value="unknown raison">
    <input type=submit value="Unsubscribe to Abonnement Radars FR Annuel " name="frm_crmaction_submit" id="frm_crmaction_submit" >
    Maintenant, le second bouton modifie bien le champ..le premier nom
    grrrrrrrrrrrrrrrrrrrrrrrrrrr

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Normal, les name sont en dur dans la fonction =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript">
    function Confirm_unsubscription(le_form_actif) {
    	var saisie = prompt("Voulez vous vraiment annuler l'Abonnement Radars FR Annuel",'raison de désabonnment');
    	if (saisie != null) {
    		le_form_actif.elements['frm_action_raison_unsubscribe'].value = saisie;
    		return true;
    	}
    	else
    		return false;
    }
    </script>
     
    <form name="frm_crmaction_2" id="frm_crmaction_2" onSubmit="return Confirm_unsubscription(this);" method="POST" target="">
    (pas testé)
    Il faut par contre redonner le même nom aux elements du form : c'est le param "le_form_actif" qui fera pointer sur le "bon".

    Mais il serait préférable d'utiliser les id : tu as certainement une boucle serveur pour générer tes <form>. Tu peux en profiter pour gérer des id (uniques, bien sûr) que tu pourras retrouver facilement en JS en passant uniquement le n° du form (celui issu de ta boucle PHP) en paramètre de la fonction ...

    A+

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Par défaut

    wayyyyyyyyyyy
    Mille merci
    ça fonctionne avec l'ajout du paramètre Confirm_unsubscription(actif_form)
    bonne fin de journée
    et encore MERCI

    PS:
    juste pour info : les noms n'étaient pas en dur, j'avais posté le code source de la page, mais le script était plutôt:
    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
     
     
    <script type="text/javascript">
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'{SUBSCRIPTION_LABEL}",'raison de désabonnment');
    	if (saisie != null) {
    		document.forms["frm_crmaction_{SUBSCRIPTION_ID}"].elements['frm_action_raison_unsubscribe_{SUBSCRIPTION_ID}'].value = saisie;
    		return true;
    	}
    	else
    		return false;
    }
    </script>
     
    <form name="frm_crmaction_{SUBSCRIPTION_ID}" id="frm_crmaction_{SUBSCRIPTION_ID}" onSubmit="return Confirm_unsubscription();" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="{SUBSCRIPTION_ID}">
    <input type=hidden name="frm_action_packid" value="{SUBSCRIPTION_PACKID}">
    <input type=hidden name="frm_action_raison_unsubscribe_{SUBSCRIPTION_ID}" value="unknown raison">
    <input type=submit value="Unsubscribe to {SUBSCRIPTION_LABEL} " name="frm_crmaction_submit" id="frm_crmaction_submit" >
    </form>
    et donc les id étaient bien générés automatiquement
    mais je trouve l'utilisation de formulaire actif plus simple et fait l'affaire

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par nawara Voir le message
    juste pour info : les noms n'étaient pas en dur, j'avais posté le code source de la page, mais le script était plutôt:
    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
     
     
    <script type="text/javascript">
    function Confirm_unsubscription() {
    	var saisie = prompt("Voulez vous vraiment annuler l'{SUBSCRIPTION_LABEL}",'raison de désabonnment');
    	if (saisie != null) {
    		document.forms["frm_crmaction_{SUBSCRIPTION_ID}"].elements['frm_action_raison_unsubscribe_{SUBSCRIPTION_ID}'].value = saisie;
    		return true;
    	}
    	else
    		return false;
    }
    </script>
     
    <form name="frm_crmaction_{SUBSCRIPTION_ID}" id="frm_crmaction_{SUBSCRIPTION_ID}" onSubmit="return Confirm_unsubscription();" method="POST" target="">
    <input type=hidden name="frm_action_subscriptionid" value="{SUBSCRIPTION_ID}">
    <input type=hidden name="frm_action_packid" value="{SUBSCRIPTION_PACKID}">
    <input type=hidden name="frm_action_raison_unsubscribe_{SUBSCRIPTION_ID}" value="unknown raison">
    <input type=submit value="Unsubscribe to {SUBSCRIPTION_LABEL} " name="frm_crmaction_submit" id="frm_crmaction_submit" >
    </form>
    et donc les id étaient bien générés automatiquement
    mais je trouve l'utilisation de formulaire actif plus simple et fait l'affaire
    Effectivement !
    Mais tu ne créais qu'une seule fonction, qui pointait donc sur le dernier.
    Pour suivre ta logique initiale, il aurait fallu créer une fonction par <form>.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Confirm_unsubscription_1() {...
    Confirm_unsubscription_2() {...


    A+

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Par défaut Merci
    Okaaaaaaaaaaaaay !!

    Enfin ! j'ai compris ...
    Merci pour tout.
    et comme tu dis,
    A+

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

Discussions similaires

  1. [MySQL] plusieurs bouton dans 1 form
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/02/2006, 09h40
  2. [VB.NET]Comment gérer plusieurs boutons en 1 méthode Click ?
    Par Cydreav dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/02/2006, 23h53
  3. Gérer plusieur bouton pour un meme formulaire
    Par Phenomenium dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/01/2006, 13h08
  4. Plusieurs boutons dans un formulaire
    Par kcizth dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/01/2006, 14h42
  5. Acesskey dynamique dans un form à plusieurs boutons submit ?
    Par boteha dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/09/2005, 17h54

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