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

Contributions JavaScript / AJAX Discussion :

Les formulaires (partie 2) : Comment remplacer un caractère par un autre lorsque l'utilisateur renseigne. . . [Fait] [FAQ]


Sujet :

Contributions JavaScript / AJAX

  1. #1
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut Les formulaires (partie 2) : Comment remplacer un caractère par un autre lorsque l'utilisateur renseigne. . .
    Comment remplacer un caractère par un autre lorsque l'utilisateur renseigne un champ texte ?
    http://javascript.developpez.com/faq...s#RemplacerCar

    • ajout d'un avertissement
    • accolades ouvrantes à la ligne



    Comment remplacer un caractère par un autre lorsque l'utilisateur renseigne un champ texte ?


    Par exemple, si l'on veut remplacer toutes les virgules par un point.
    Voici le code de la fonction :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function virgule(texte) 
    {
        if (texte.substr(texte.length-1,1) == ",") 
        {
        document.getElementById('champ').value=texte.substr(0,texte.length-1)+ "." ;
        }
    }
    Et voici le code du champ texte :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="champ" onkeyup="virgule(this.value);">

    Attention :
    • si l'utilisateur laisse le doigt appuyé sur la touche virgule "," seule la dernière virgule (après relâchement de la touche) sera transformée en point ".".
    • si une chaîne de caractères contenant des virgules est copiée-collée dans le champ, les virgules ne sont pas transformées en points.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bien vu pour les avertissements.

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Cette méthode ne convient pas du tout, elle ne changera la virgule que s'il s'agit du dernier caractère entré. Si on retourne en arrière dans le champ pour mettre une virgule, elle ne sera pas convertie.

    Je propose d'utiliser la méthode String.replace() à la place :

    Comment remplacer un caractère par un autre lorsque l'utilisateur renseigne un champ texte ?

    Par exemple, si l'on veut remplacer toutes les virgules par un point dans ce champ :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="champ">

    le code Javascript adéquat est :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    document.getElementById("champ").addEventListener("keyup", function(e){
        var aRemplacer = ',', remplacerPar = '.';    
        var start = this.selectionStart,  end = this.selectionEnd;
        this.value = this.value.replace(new RegExp(aRemplacer,"g"),remplacerPar);
        this.setSelectionRange(start, end); // restaure la position du curseur
    });
    Test ici : http://jsfiddle.net/v6z7t/
    Le setSelectionRange n'est pas supporté partout, mais ça reste mieux que l'ancienne fonction qui ne s'en préoccupait même pas.
    One Web to rule them all

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut Relecture mais pas d'avis!
    Là je suis plus circonspect car pour moi aucune des deux méthodes n'est vraiment actuellement viable.

    La méthode proposée par SylvainPV est la plus moderne mais incomplètement supportée encore à ce jour.

    J'aurais tendance à préconiser un replace de la virgule par le point, c'est quand même le cas le plus fréquent, sur l'événement onblur du champ de saisie.
    En effet pourquoi changer les habitudes de celui/celle qui saisie ou de la configuration de son environnement, la remise en forme s'effectuant sur le onblur m'apparaissant satisfaire tout le monde.

    Donc je botte en touche sur celle là

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    On peut dire qu'il n'existe pas de solution adaptée à tous les navigateurs ?
    Indiquer les défauts de chaque solution et pour la solution de SylvainPV ajouter les navigateurs compatibles ?

  6. #6
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Oui il vaut mieux faire ainsi car on ne peut se permettre de laisser croire des choses. Il faut qu'on soit le plus clair possible pour le lecteur.

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Quelle serait la formulation finale ?

  8. #8
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Conserver le comportement sur le keyup mais ne remplacer que si la chaîne comporte une virgule.
    http://jsfiddle.net/v6z7t/3/

  9. #9
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Merci !


    Auteur, résolu ?

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Si cela te convient oui.

  11. #11
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Pfiou. J'ai adapté toutes les Q/R sur les formulaires sur la faq de travail.

    Je n'ai pas, pour le moment, le temps de relire. Si quelqu'un peut vite jeter un coup d'oeil, ce serait sympa.


  12. #12
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    après une lecture très rapide

    Comment attribuer une valeur à l'attribut name d'un élément créé par un script ?
    Pour créer un élément HTML (par exemple un input), nous utilisons la syntaxe suivabte. Ce code fonctionne à partir de IE8 et sur les autres navigateurs :
    Pour les versions d'Internet Explorer antérieures à IE8), il faut intégrer l'attribut name dans la méthode createElement(). Pour plus de détails, voir le paragraphe [Obsolète] de cette Q/R.

  13. #13
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Parfait, merci.

    J'ai pu refaire un passage également mais je n'ai pas encore eu l'occasion de le mettre en ligne. Ca concerne des broutilles (reformulation et mise en forme). De ce côté-là, ça devrait être bon.

    J'espère cependant qu'il ne manque pas du contenu. J'ai pu sauter une Q/R sans le vouloir.

    J'ai ajouté Auteur sur une Q/R. J'avais oublié de l'inclure malgré sa relecture.

    D'ici quelques jours, je mettrai cela en production.


  14. #14
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Comment vérifier la syntaxe d'une date ?
    Le style justifié passe mal dans cette Q/R les mots sont séparés par de grands espaces.

    Je viens de m'apercevoir que j'ai oublié 3 questions :
    Comment accéder aux éléments d'un formulaire ?
    Comment lier deux listes déroulantes entre elles ?
    Comment ajouter des options dans une liste déroulante à partir d'une autre ?

  15. #15
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Oui j'avais vu aussi. J'ai ajouté un passage à la ligne. Faudra que je regarde le résultat.

    Pour les questions, il y en a une que tu avais relue. Pour les autres, il faudrait effectivement jeter un coup d'oeil rapide.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/11/2013, 21h36
  2. [FAQ] Les formulaires (partie 2) : Comment soumettre un formulaire automatiquement ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 4
    Dernier message: 18/11/2013, 21h33
  3. [FAQ] Les formulaires (partie 2) : Comment vérifier la syntaxe d'une date ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 4
    Dernier message: 18/11/2013, 21h30
  4. Réponses: 2
    Dernier message: 16/11/2013, 19h36
  5. [FAQ] Les formulaires (partie 2) : Comment soumettre un formulaire en utilisant un lien ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 5
    Dernier message: 16/11/2013, 17h55

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