11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un soucis avec mon code.

	function indicatif(obj){
var str=obj.value.replace(/-|\./g,'')
switch(true){
  case (str.length<12) : break;
 case (str.length==12):
  tel=str.replace(/^(\d{1})(\d{2})(\d{1})(\d{2})(\d{2})(\d{2})(\d{2})$/,"$1.$2.$3.$4.$5.$6.$7")
  obj.value=tel
  break;
 case (str.length>12) :
  obj.value=str.substr(0,12).replace(/^(\d{1})(\d{2})(\{1})(\d{2})(\d{2})(\d{2})(\d{2})$/,"$1.$2.$3.$4.$5.$6.$7")
  }
	}


Ca donne 0 33 14 13 45 46, je voudrai + 33 14 13 45 46.

Si je tape le + ça bloque par contre si je tape 0 ça passe. Vous avez la solution ?
Modifié par Tintin75 (13 Nov 2017 - 16:11)
Modérateur
Si tu choisis de faire une saisie avec le code international, ça veut dire que tu prends en compte l'architecture des numéros internationaux, n'est ce pas ?
à noter que les indicatifs téléphoniques ont aussi une codification

Perso, je ferai 2 champs :
1. aide à la saisie de l'indicatif international
2. une suite de chiffre sans espace ou caractères autre que des chiffres.

ton switch est pas terrible. Tu peux largement faire un seul if (value.length >=12) ....
Je t'invite à revoir ta RegEx. Elle n'est pas bonne et vois avec ce que je t'ai dit précédemment.
Modifié par niuxe (13 Nov 2017 - 14:54)
Meilleure solution