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 :

Récupération valeur dynamique pour modification URL


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Par défaut Récupération valeur dynamique pour modification URL
    Bonjour,

    Je souhaite demander à l'utilisateur de saisir deux dates (avec un input date). Je veux récupérer les valeurs saisies pour les entrer dans une URL (j'ai donc des variables dans mon URL).

    J'y suis presque, mais je ne récupère pas une valeur mais un [object Event]. J'ai fait tout un tas de test mais rien à faire, je ne trouve pas la solution.

    Voici mon code :

    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
    <input type="date" id="mySelect" onchange="handler(event);"/> // mon input date qui demande la date à l'user
    <p id="affiche"></p> // test - affiche bien dynamiquement la bonne valeur
     
    <div class="division" onclick="openInNewTab('https://monreporting.fr/time:(from:%27'+valurl+'T23:00:00.000Z%27,mode:absolute,to:%272019-01-02T10:26:38.772Z%27)) // affiche time:(from:'[object Event]T23:00:00.000
     
    <script>
            function handler(e){
                    alert(e.target.value); //test - récupère bien la bonne valeur
                    valurl = e;
      
                    var x = document.getElementById("mySelect").value; // récupère la valeur entrée
                    document.getElementById("affiche").innerHTML = x; // test d'affichage
            }
            var valurl = x; //affectation valeur
    </script>
    J'ai essayé d'épurer le code au maximum pour ne garder que l'essentiel, avec les tests d'affichage des valeurs également.
    Je ne suis pas un expert javascript, il y a surement encore beaucoup de lignes inutiles...

    Par défaut ou si l'utilisateur ne sélectionne pas de date, j'aimerais que la période soit du 1er janvier de l'année en cours à la date du jour (et que le lien soit tout de même cliquable).

    Merci pour votre aide :)

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Comme ça ça fonctionne mais ton url n'est pas bien formée. Personnellement je n'aurais pas fait comme ça (mais je ne suis pas sûr de savoir ce que tu veux faire).

    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
    <input type="date" id="mySelect" onchange="handler(event);"/> 
    <p id="affiche"></p>
     
    <div class="division" onclick="window.open('https://monreporting.fr/time:(from:%27' + valurl + 'T23:00:00.000Z%27,mode:absolute,to:%272019-01-02T10:26:38.772Z%27)')">
    xxxx
    </div> 
     
    <script>
            
      function handler(e){
                    valurl = document.getElementById("mySelect").value; // récupère la valeur entrée
                    document.getElementById("affiche").innerHTML = valurl; // test d'affichage
            }
            var valurl = "";
    </script>

    J'ai mis window.open à la place de ton openInNewTab que je n'ai pas.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Par défaut
    Cela fonctionne merci beaucoup !

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Tu dois bannir tout code javascript de tes attributs html et utiliser un fichier dédié à ton code javascript.

    Voilà comment je procéderai:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html><head><meta charset="utf-8"/></head><body>
     
    <label for="dateFrom">début: </label>
    <input type="date" id="dateFrom"/>
     
    <label for="dateTo">fin: </label>
    <input type="date" id="dateTo"/>
    <br/>
    <a href="" id="interval" target="_blank">***</a>
     
    <script src="scriptdate.js"></script>
     
    </body></html>

    Code scriptdate.js : 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
    'use strict';
    { // on encapsule pour éviter de polluer l'espace de nom
     
        // on créer un objet avec les deux inputs de l'intervalle pour alléger l'écriture
        const di = {
            from: document.getElementById('dateFrom'),
            to  : document.getElementById('dateTo')
        }
     
        function updateLink() {
            let from = di.from.valueAsDate,
                to = di.to.valueAsDate,
                interval = document.getElementById('interval');
            interval.setAttribute('href', `https://monreporting.fr/time.php?from=${encodeURIComponent(from.toISOString())}&to=${encodeURIComponent(to.toISOString())}`);
            interval.replaceChild(document.createTextNode(`${from.toLocaleDateString()} - ${to.toLocaleDateString()}`), interval.firstChild);
        }
     
        // on attache les gestionnaires d'événement
        di.from.addEventListener('change', () => {
            if (di.from.value > di.to.value)
                di.to.value = di.from.value;
     
            updateLink();
        }, false);
     
        di.to.addEventListener('change', () => {
            if (di.from.value > di.to.value)
                di.from.value = di.to.value;
     
            updateLink();
        }, false);
     
        // on initialise avec les dates par défaut
        di.from.valueAsDate = new Date(Date.UTC(new Date().getFullYear(), 0, 1));
        di.to.valueAsDate = new Date();
        updateLink();
    }

    À toi d'adapter le template du lien à ta guise.

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

Discussions similaires

  1. Récupération valeur variables pour actionperformed
    Par kenda10 dans le forum Débuter
    Réponses: 2
    Dernier message: 09/07/2012, 11h35
  2. Gérer valeur input pour création url, redirection
    Par cl9m9n7 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2011, 07h37
  3. Récupération valeur Input dans une URL
    Par kilian dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/07/2009, 18h18
  4. [XSLT] Normalisation des valeurs pour les URL
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 10/01/2006, 12h33
  5. Aide pour modification d'un menu dynamique
    Par GarGamel55 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/09/2005, 18h29

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