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 :

Connaître quel élément est cliqué


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut Connaître quel élément est cliqué
    Bonjour à tous,

    J'ai une page en html/php avec une centaine de boutons, tous avec un "name" different,
    et je voudrai savoir sur quel bouton l'utilisateur a cliqué pour pouvoir traiter en fonction. (Le traitement est globalement le même, envoyer une valeur à la base de données, cette valeur étant donnée par le bouton en question)

    Au départ j'ai pensé partir sur des "submit" à la place de boutons classiques, mais c'est peux être pas mieux car je ne vois toujours pas comment faire...

  2. #2
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 987
    Points
    2 987
    Par défaut sous-forum javascript
    Bonjour

    Tu devrais poster dans la section Javascript pour avoir des aides plus précises puisque ce ne sera pas en PHP que tu le feras.

    Selon moi (mais cela fait quelques années que je n'ai plus fait du Javascript), tu peux assigner une seule fonction onClick à ta page; cette fonction va donc être utilisée par la centaine de boutons de ta page. Chaque bouton aura un ID qui lui est propre et, donc, dans la fonction onClick il suffira de détecter le ID de l'objet qui l'a déclenché.

    Comme je l'ai dit, cela fait longtemps que je n'ai plus codé en JS aussi je ne saurais être plus précis mais nul doute que ce sera la piste qui sera proposée et étoffée par d'autres intervenants plus habitués.

    Bonne journée.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  3. #3
    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 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Tout dépend de comment le click est attribué ...
    Il est possible de passer par this dans le onclik du bouton ou e.target dans un eventListener ...

    On pourrait t'en dire plus si tu nous montrais un bout de code ...
    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 !

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    ça dépend aussi :
    • si il y a autant de formulaires que de boutons (1 bouton = 1 formulaire)
    • ou s'il n'y a qu'un seul formulaire.

    Mais sans avoir plus de détail sur le code, on ne peut pas en dire plus.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Merci à cavo789 et au Modérateur d'avoir déplacé le sujet, étant encore plutôt novice en web appli je n'aurai pas pensé au Javascript.

    Pour ce qui est du code, je ne vois pas bien ce que je pourrai vous donner... Etant surtout en recherche de solution.
    La partie html peut être aussi bien un bouton, un submit, ou même autre chose, tant que cela fonctionne. A retenir juste que pour le moment je suis parti du principe d'avoir un "name" différent pour chaque bouton (Mais peut être que cela ne suffit pas).
    Et pour la partie php/javascript, je n'ai rien puisque c'est le sujet de ce topic (à part la partie base de données, mais ça c'est la finalité donc peu importe cela ne change rien, ça pourrai être pour faire autre chose que cela ne changerai pas la question).

    Du coup,
    SpaceFrog>> Pourrais-tu détailler les 2 solutions dont tu parles, bien que je vois de quoi tu parles je ne les ai jamais utilisé (je comprends le concepte par analogie au C#).

    jreaux62>> Jusqu'à présent je n'ai toujours utilisé qu'un seul formulaire dans mes pages, mais encore une fois peu importe, du moment que le résultat est là. Néanmoins ça me parait faire beaucoup de formulaire si on part sur un par bouton (si on part sur des formulaires, donc des input="submit" d'ailleurs).

  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 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 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Deux posibilités parmi plein d'autres ...

    https://jsfiddle.net/4qk2c7sa/

    On peut selectionner les éléments par la name (ou le début du name), par une class, on peut passer par des attributs data- ...
    Il y a tellement de possibilités, c'est pour cela que je te demandais un début de code HTML pour voir la structure existante ...
    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 !

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Oh, je vois l'idée, merci beaucoup pour les examples !
    Je pense que je devrais pouvoir me débrouiller avec ça et adapter à ce que je veux en faire.

    Question subsidiaire, est-ce qu'il y a un endroit où il est bon de placer le code javascipt ? Proche de la où ça m'arrange ? A la fin du fichier php ? Dans un autre fichier que j'importe en en-tête de mon fichier php ?

  8. #8
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    l'ideal etant un fichier separe (integre dans le header) (pour qu'il soit mis en cache dans le navigateur) avec le mode defer (pour ne pas bloquer le chargement de la page) https://developer.mozilla.org/fr/doc...Element/script

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="tonJS.js" defer></script>
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    OK, merci !
    Je regarde tout ça et je reviendrai si jamais j'ai d'autres questions !

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Je réouvre le sujet car après avoir avancé je me retrouve de nouveau confronté à un problème.

    J'ai implémenté un script en javascript pour changer la valeur de mes boutons à chaque clique/appui, et cela fonctionne parfaitement bien!
    Par contre lorsque j'envoie le formulaire par la suite, c'est encore la valeur ("value") qu'il y avait avant qui est prise en compte...
    Est-ce que les modifications apportées par le javascript ne sont pas prise en compte par php...?

    Je précise que le code en full php avec des radioboutons à la place fonctionne parfaitement bien.
    J'utilise $_POST["le nom du bouton"] pour récupérer la valeur ("value") de ce dernier.

  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 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 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    J'ai implémenté un script en javascript pour changer la valeur de mes boutons à chaque clique/appu
    Quel est ce script mystérieux que tu nous caches ?? Pour avoir une idée de ce qui se passe il nous faudrait voir comment tu procèdes ...
    Comment le formulaire est-il soumis ?
    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 !

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Je ne cache rien de mysterieux, je ne vois juste pas l'intérêt de le poster vu que cela fonctionne et ce qu'il y a d'important à retenir c'est qu'il change la "value" des boutons.
    Mais pour les curieux voila le code:
    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
    <script type="text/javascript">
    function buttonClick(elt)
    {
        var str = elt.name.substring(0, 2);
        if (str == 'Br')
        {
            if (elt.value == 'X')
            {
                elt.value = 'O';
            }
            else
            {
                elt.value = 'X';
            }
        }
        else if (str == 'Lu')
     [...]
    }
    </script>
    Ensuite j'envoie le formulaire via un submit
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" class="buttonSubmit" name="buttonEdit" value="Edit" onclick="">
    Rien de bien extravagant.

  13. #13
    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 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    "value" des boutons.
    ???
    des inputs type button ???
    Si c'est le cas c'est pour cela que ton post ne reçoit pas les values modifiées ...

    Quelle est ta motivation d'utiliser des inputs buttons au lieu d'input text ?
    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 !

  14. #14
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    Citation Envoyé par BartRoX Voir le message
    Est-ce que les modifications apportées par le javascript ne sont pas prise en compte par php...?
    Non, puisque JS est coté client et PHP coté serveur.

    A moins d'utiliser Ajax, bien sûr.

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    C'est bien ce que je craignais...
    Du coup ça marche comment Ajax ?

  16. #16
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    avec une eponge
    (desole, j'etais oblige ^^)

    pour faire simple, tu utilises fetch developer.mozilla.org/fr/docs/Web/API/Fetch_API/Using_Fetch

    fetch('tonUrl.php') tu peux ajouter au header de la requete des parametres (qui seront traites par ta page php)
    => ta page php peu retourner une reponse qui sera traitee par le js (retour de fetch)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    /* exempleData.php */
    $data = ['toto' => 'ok'];
    //autres trucs
    echo json_encode($data);
    ?>
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fetch('exempleData.php')
    .then(res => res.json())//comme le php nous retourne un JSON, on formate la reponse en JSON
    .then(data => {
        console.log(data);
    });
    grosso-modo, c'est comme ca, que ca fonctionne ... facile hien !
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

Discussions similaires

  1. Savoir si un élément est cliqué
    Par elcoyotos dans le forum jQuery
    Réponses: 6
    Dernier message: 08/10/2014, 09h01
  2. Réponses: 10
    Dernier message: 17/08/2010, 20h59
  3. C# Savoir quel bouton est cliqué.
    Par onizuka159 dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 22/05/2007, 06h58
  4. Réponses: 3
    Dernier message: 15/11/2006, 13h57

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