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 :

N° de téléphone dans un formulaire


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant - Webmarketing
    Inscrit en
    Avril 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant - Webmarketing
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 25
    Points : 33
    Points
    33
    Par défaut N° de téléphone dans un formulaire
    Bonjour,
    Je suis nouveau dans le forum et débutant en programmation.

    Mon problème :
    Je souhaite saisir un n° de téléphone dans un formulaire et j'ai trouvé sur ce site des infos intéressantes. Voici le script utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            function formatte(obj,group){
            var regspace=/(\s)/g;     
            tempString=obj.value.replace(regspace,'')
            var reg=/([\d]{2})/g
            var regend=/\s$/
            if (tempString.length>group){
                obj.value=tempString.replace(reg,"$1 ").replace(regend,'')
                }
            }
    Et en HTML :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="tel" onkeyup="formatte(this,2)" id="telfixe" name="telfixe" …

    Ceci fonctionne très bien et des espaces sont ajoutés automatiquement à la saisie, tous les 2 chiffres.
    Par contre si je saisis du texte dans ce champ, du style "toto-titi", c'est accepté ce qui est plutôt embêtant.
    Je cherche donc à empêcher "en ligne" toute saisie de caractères autres que des chiffres.
    Ce n'est certainement pas très compliqué, mais après avoir passé pas mal de temps à rechercher, je me suis dit que vous pourriez peut-être me donner une solution.

    Merci pour votre aide.
    Cdt,
    Raphaël

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     var regspace=/(\s)/g;     
            tempString=obj.value.replace(regspace,'')
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     var regspace=/([^0-9])/g;     
            tempString=obj.value.replace(regspace,'')
    remplace tout ce qui n'es pas un chiffre par ""

    A+JYT

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant - Webmarketing
    Inscrit en
    Avril 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant - Webmarketing
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 25
    Points : 33
    Points
    33
    Par défaut Suite n° de téléphone dans formulaire
    Merci à Sekaijin
    Effectivement cela efface les caractères alphanumériques mais pas dans tous les cas.
    Deux cas :
    1.- Je saisis toto4528 --> j'obtiens bien 45 28 (avec espace entre les deux)
    2.- Je saisis (en pensant aux plaisantins) tototiti --> il n'y a pas de correction et l'affichage reste tel que saisi : tototiti.

    Avez-vous une solution ?

    Merci pour votre aide.
    Raphaël

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Autant interdire directement la saisie des caractères non numériques à la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.getElementById('telfixe').onkeydown = function(e){
        return (e.which > 95 && e.which < 106);
    }
    Bon évidemment, c'est juste une base, il faut quand même prévoir les corrections etc.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant - Webmarketing
    Inscrit en
    Avril 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant - Webmarketing
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 25
    Points : 33
    Points
    33
    Par défaut Concretement ?
    Merci à Bovino pour votre réponse.
    Mais j'avoue que je ne sais pas l'appliquer, aussi simple qu'elle paraisse.

    Voici ce que j'ai mis dans mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function formatte(obj,group){
    document.getElementById('telfixe').onkeydown = function(e){
    return (e.which > 95 && e.which < 106);
    }
    Et dans ma page php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="tel" onkeyup="formatte(this,2)" id="telfixe" name="telfixe"
    Cela ne fonctionne pas, il n'y a aucune correction de la saisie.
    Il faut peut-être renommer la fonction ou l'appeler autrement ?
    D'autre part, à quoi correspondent les codes 95 à 106 ?
    Car si je comprends bien, on n'accepte que les valeurs comprises entre 96 et 105 mais les codes ascii de 0 à 9 vont de 48 à 57, d'où le trouble qu'y s'y ajoute.
    Merci pour votre éclairage.

    Raphaël

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Consultant - Webmarketing
    Inscrit en
    Avril 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant - Webmarketing
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 25
    Points : 33
    Points
    33
    Par défaut RESOLU
    Finalement, je suis parti de l'idée de Sekaijin, que je remercie encore.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
            function formatte(obj,group){
            var regspace=/(\D)/g;    /* remplace tout ce qui n'est pas un chiffre par un espace */
            tempString=obj.value.replace(regspace,'')
            var reg=/([\d]{2})/g
            var regend=/\s$/
            if (tempString.length>group){
                obj.value=tempString.replace(reg,"$1 ").replace(regend,'')
                }
            }
    Et dans le formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="contactmail" type="tel" onkeyup="formatte(this,2)" id="telfixe" name="telfixe" ...
    Ceci permet donc de formater la saisie : xx xx xx xx xx
    Et si du texte et des chiffres sont mélangés, le texte est effacé.
    Par contre s'il s'agit uniquement de texte, j'ai mis en place un autre sécurité dans le code PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $regex_tel = '/(\d\s)/';
    if (!preg_match($regex_tel, $telfixe))
        {   $alert = 'Le n° de téléphone fixe : '.$telfixe.' n\'est pas valide'; }

    Merci à vous pour votre participation.
    Raphaël

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

Discussions similaires

  1. Vérification numéro de téléphone dans un formulaire
    Par riderfun dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/07/2008, 14h56
  2. Forcer la saisie en MAJ dans un Formulaire
    Par lolos dans le forum IHM
    Réponses: 4
    Dernier message: 12/08/2003, 10h57
  3. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  4. Réponses: 2
    Dernier message: 12/02/2003, 15h26
  5. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52

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