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érer une variable d'une fonction et de la mettre dans un maxlength d'un input.


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Récupérer une variable d'une fonction et de la mettre dans un maxlength d'un input.
    Bonjour à tous,

    J'ai une fonction qui récupère la valeur d'un <select>, et j'aimerais que cette valeur deviennent le max de caractère d'un input.
    Des amis m'ont dit qu'avec PHP c'étais possible mais je ne pense pas, concrètement :

    Sur ma page de test je voulais que si un utilisateur choisis comme indicatif téléphonique (+454 par exemple) à 3 chiffres par exemple ou plus, on adapte le maximum de chiffre qu'il pouvait saisir dans l'input du numéro de téléphone.

    Je pense que cela est faisable en javascript mais je n'est pas trouvé comment (ou mal chercher).

    Merci d'avance pour vos réponses.
    Bonne journée.

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut,

    pour commencer il faut réagir aux évènements sur le <select> : "change" ou "input" (dans le cas du <select>, les deux sont équivalents).
    Tu peux utiliser querySelector() (ou getElementById() si tu as mis un id) pour obtenir une référence sur le <select>, puis addEventListener() pour inscrire un gestionnaire d’évènement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const leSelect = document.querySelector("select");
    leSelect.addEventListener("input", function (event) {
      ...
    });
    Ensuite, je pense que tu auras besoin d’établir une liste des correspondances entre les indicatifs téléphoniques et les maxLength associées. Pour ça tu peux utiliser un objet Map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const correspondances = new Map([
      [ "+454", 13 ],
      [ "+33", 12 ],
      // etc.
    ]);
    Dans le gestionnaire d’évènement, tu utiliseras this.value ou this.selectedOptions[0].textContent selon que tu as mis les données dans les attributs value="…" des <option> ou dans leur contenu texte direct.

    Enfin, il te faut également une référence sur ton input avec querySelector() ou getElementById().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    const leInput = ... ;
     
    const correspondances = ... ;
     
    leSelect.addEventListener("input", function (event) {
      const indicatif = this.value; // ou this.selectedOptions[0].textContent
      const max = correspondances.get(indicatif);
      leInput.maxLength = max; // attention au L majuscule
    });
    Bien sûr, avec tout ça, il ne faut pas oublier le piège du « DOM pas prêt », donc :
    • soit tu mets ta balise <script> à la fin du <body> (ou après) ;
    • soit tu mets un attribut async ou defer sur ta balise <script> ;
    • soit tu utilises l’évènement "DOMContentLoaded".
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Salut,

    Je débute vraiment en Javascript et dire que j'ai tous compris serait un mensonge ^^, je suis totalement perdu, c'est le seul moyen de faire ça je pensais qu'il suffisais juste de stocker la variable que j'avais eu du select puis de la mettre direct dans un maxLength en mode :

    -> maxlength = $nb

    Après vu ce que tu as écrit je pense que ce n'est pas si simple que cela. Je vais essayez de travailler ton code pour le comprendre et les petites subtilité du Javascript (const,Map,etc..).

    Merci du temps passé la dessus, j'espère que ça aidera aussi d'autre personne !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2016, 17h06
  2. Réponses: 2
    Dernier message: 05/05/2012, 01h57
  3. Réponses: 13
    Dernier message: 10/06/2008, 15h40
  4. Réponses: 2
    Dernier message: 24/08/2006, 10h46
  5. Récupérer une fonction imbriquée
    Par Mikiman dans le forum Langage
    Réponses: 6
    Dernier message: 14/08/2006, 15h37

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