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 :

Mettre un espace tout les 2 caractères


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut Mettre un espace tout les 2 caractères
    salut,
    je demande si on peut faire une fonction pour inserer un espace apres chaque 2 caractere c'est exactement pr une zone de texte qui contient le numero de telephone.
    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 4
    Points
    4
    Par défaut
    Pas à ma connaissance tu es obligé d'ajouter des   tout les 2 chiffres

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Code : 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
     
    <script language="javascript">
    function Telephone(ndt) {
    if(isNaN(ndt*1)) {
    return false;
    } else {
    ndt = ndt.toString();
    }
    var newTel = "";
    var count = 0;
    for(i=0; i!=ndt.length; i++) {
    switch(count) {
    case 0:
    newTel+=ndt.charAt(i);
    count++;
    break;
    case 1:
    newTel+=ndt.charAt(i);
    count++;
    break;
    case 2:
    newTel+=" "+ndt.charAt(i);
    count=1;
    break;
    }
    }
    return newTel;
    }
     
    var MonNumeroDeTel = "0607080910";
    alert(MonNumeroDeTel); // 0607080910
    alert(Telephone(MonNumeroDeTel)) // 06 07 08 09 19
    </script>

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    salut,
    je ne sais pas comment utiliser ce code, car je veux qu'il marche onkeyup. J'ai esssayé de le tester mais il m'a rien donné.

  5. #5
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut


    Je te propose ca (sur onblur plutot que onkeydown, c'est moins contraignant)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Saisir tel : <input type="text" size="15" onblur="return tel(this, '.')" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function tel(element, separator) {
    	var newvalue = "";
    	for (var i = 0; i < element.value.length; i++) {
    		if ((i > 0) && (i % 2 == 0)) {
    			newvalue += separator;
    		}
    		newvalue += element.value.charAt(i);
    	}
    	element.value = newvalue;
    	return true;
    }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Salut
    merci pr le code mais il me donne point comme separateur, est ce que je peux faire espace comme separateur je ne sais pas koi changer.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    oups rE salut
    c'est reglé merci, je viens de voir le '.' et je l'ai changé par espace.

  8. #8
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut
    Ben oui l'avantage de cette méthode c'est que tu mets ce que tu veux en séparateur

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    on aurait aussi pu faire un split sur un regExp {2} ...
    suivi d'un join avec le séparateur voulu ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut


    Comment déclares tu ta regExp ?

    J'ai essayé différents trucs mais ca marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var e = new RegExp("{2}", "g");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var e = new RegExp(".{2}", "g");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var e = new RegExp("^.{2}", "g");

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut

    Je sais pas je suis une bille en regExp mais je l'ai déja vu faire ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut
    Avec le split ca me parait impossible par contre on peut utiliser le replace comme ceci :

    En supposant que la chaine fait 10 caracteres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var e = new RegExp("(..)(..)(..)(..)(..)", "g");
    element.value = element.value.replace(e, "$1"+separator+"$2"+separator+"$3"+separator+"$4"+separator+"$5");
    Je propose ca comme méthode (car il y avait un bug si on rentrait/sortait plusieurs fois de la zone) donc sur le onblur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function formatterTelephone(element, separator) {
    	// 1. On ne garde que les chiffres
    	var theValue = element.value.replace(/[^\d]/g, "");
    	// 2. On vérifie la longueur
    	if (theValue.length == 10) {
    		// 3. On formatte
    		var e = new RegExp("(..)(..)(..)(..)(..)", "g");
    		element.value = theValue.replace(e, "$1"+separator+"$2"+separator+"$3"+separator+"$4"+separator+"$5");
    	}
    	else {
    		element.value = "";
    	}
    	return true;
    }

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Bien plus simple (avec le onkeydown) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script language="javascript">
    function Telephone(kval, sep) {
    if((kval.length == 2 || kval.length == 5 || kval.length == 8 || kval.length == 11)) {
    kval += sep;
    } else if(event.keyCode==8) {
    return true;
    }
    return kval;
    }
    </script>
    <input type="text" id="tel" value="" onkeydown="if(this.value.length<14&&event.keyCode!=8) this.value=Telephone(this.value,' '); else if(event.keyCode==8) return true; else if(this.value.length>13) return false;">

  14. #14
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut
    Sous IE mais sous FF la gestion des "event" est différente

  15. #15
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Je suis tombé sur ce fil quand j'ai fait une recherche google, donc voilà une manière simple de faire, non optimisée bien sûr:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function formatFrenchPhoneNumber(number: string) {
      return number.split('').join(' ').replace(/([0-9]) ([0-9])\b/g, '$1$2')
    }
    En gros, on transforme '0123456789' en '0 1 2 3 4 5 6 7 8 9' puis on utilise un replace global avec une regexp pour enfin obtenir '01 23 45 67 89'.

    Ça fait super longtemps que je m'étais pas connecté au site

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Si ça c'est pas du déterrage ...

    J'en profite car depuis 2008 j'ai un peu évolué sur les regexp...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var MonNumeroDeTel = "0607080910";
    function FrTel(tel){
    return tel.replace(/(\d\d(?!$))/g,"$1 ");
    }
     
    console.log(FrTel(MonNumeroDeTel) );
    ou de façon plus moderne
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var MonNumeroDeTel = "0607080910";
    var FrTel = (tel,sep) => tel.replace(/(\d\d(?!$))/g,"$1"+sep);
     
    console.log(FrTel(MonNumeroDeTel," ") );
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. mettre un espace entre les boutons radio
    Par Esil2008 dans le forum JSF
    Réponses: 3
    Dernier message: 16/03/2010, 11h42
  2. Un espace tout les 3 caractères
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 09/07/2009, 14h59
  3. Réponses: 7
    Dernier message: 04/08/2008, 23h31
  4. Mettre en majuscules toutes les chaînes d'une colonne
    Par Yellowmat dans le forum Excel
    Réponses: 3
    Dernier message: 26/09/2007, 01h53
  5. [Conception] Mettre a jour tout les champs d'un table lors d'un update
    Par metatron dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/09/2006, 15h29

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