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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    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

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    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
    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.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    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 confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    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

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    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.

+ 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