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
Version imprimable
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
Pas à ma connaissance tu es obligé d'ajouter des tout les 2 chiffres
Code:
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>
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é.
:coucou:
Je te propose ca (sur onblur plutot que onkeydown, c'est moins contraignant)
Code:Saisir tel : <input type="text" size="15" onblur="return tel(this, '.')" />
Code:
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; }
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.
oups rE salut
c'est reglé merci, je viens de voir le '.' et je l'ai changé par espace.:king:
Ben oui l'avantage de cette méthode c'est que tu mets ce que tu veux en séparateur 8-)
on aurait aussi pu faire un split sur un regExp {2} ...
suivi d'un join avec le séparateur voulu ...
:coucou:
Comment déclares tu ta regExp ?
J'ai essayé différents trucs mais ca marche pas ;)
Code:var e = new RegExp("{2}", "g");
Code:var e = new RegExp(".{2}", "g");
Code:var e = new RegExp("^.{2}", "g");
:oops:
Je sais pas je suis une bille en regExp mais je l'ai déja vu faire ...
Avec le split ca me parait impossible par contre on peut utiliser le replace comme ceci :
En supposant que la chaine fait 10 caracteres :
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:
1
2 var e = new RegExp("(..)(..)(..)(..)(..)", "g"); element.value = element.value.replace(e, "$1"+separator+"$2"+separator+"$3"+separator+"$4"+separator+"$5");
Code:
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; }
Bien plus simple (avec le onkeydown) :
Code:
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;">
Sous IE mais sous FF la gestion des "event" est différente :?
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:
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'.Code:
1
2
3
4 function formatFrenchPhoneNumber(number: string) { return number.split('').join(' ').replace(/([0-9]) ([0-9])\b/g, '$1$2') }
Ça fait super longtemps que je m'étais pas connecté au site :D
Si ça c'est pas du déterrage ...
J'en profite car depuis 2008 j'ai un peu évolué sur les regexp...
ou de façon plus moderneCode:
1
2
3
4
5
6
7 var MonNumeroDeTel = "0607080910"; function FrTel(tel){ return tel.replace(/(\d\d(?!$))/g,"$1 "); } console.log(FrTel(MonNumeroDeTel) );
:Code:
1
2
3
4
5 var MonNumeroDeTel = "0607080910"; var FrTel = (tel,sep) => tel.replace(/(\d\d(?!$))/g,"$1"+sep); console.log(FrTel(MonNumeroDeTel," ") );