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 :

Afficher un point automatiquement avec input type=tel


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut Afficher un point automatiquement avec input type=tel
    bonjour
    je voudrais quand l'utilisateur entre son n° de tel du style 010304 ça m'affiche le point automatiquement 01.03
    j'ai pas trouvé de script tous fait.
    Quelqu'un peut me donner une piste comment faire ça.

  2. #2
    Membre chevronné
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 387
    Par défaut
    Bonjour,

    tu peux chercher du cote de "input masking". ça doit exister en jquery.

    Sinon tu peux tenter https://alpinejs.dev/plugins/mask

    Bonne journée.

  3. #3
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut maxtrident,

    Ou alors avec une expression régulière.
    Code html : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <!DOCTYPE html>
    <html>
     
    <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <title></title>
      <meta id="viewport" content="width=device-width, initial-scale=1">
     
      <style>
        div {
          margin: 0;
          padding-bottom: 10px;
        }
     
        span {
          width: 7em;
          display: inline-block;
          font-size: 1.2em;
          text-align: right;
        }
     
        input {
          outline: none;
          text-align: left;
          border: 1px solid gray;
          font-size: 1.2em;
        }
     
        input {
          width: 140px;
        }
      </style>
     
    </head>
     
    <body>
      <div>
        <span> n° de téléphone: </span>
        <input class="champ-tel" pattern="[0-9]{10}" placeholder="10 chiffres" maxlength="10" />
        <span>Champ suivant: </span>
        <input class="champ-suivant" />
      </div>
     
      <script>
        const champs = document.querySelectorAll('input')
     
        champs[0].addEventListener('keyup', () => {
          let longueur = champs[0].getAttribute('maxlength'), valeur = champs[0].value, regx
     
          if (valeur.length == longueur) { // Si les dix chiffres sont présents
            regx = /(\d+)(\d{2})/
     
            while (regx.test(valeur)) {
              valeur = valeur.replace(regx, '$1' + '.' + '$2') // on ajoute un point après chaque correspondance (2 chiffres)
            }
     
            champs[0].value = valeur // on l'affiche dans le champ
            champs[1].focus() // focus sur le champ suivant
          }
        })
     
      </script>
     
    </body>
     
    </html>

  4. #4
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut
    salut, ASCIIDEFOND
    merci pour ton code je vais tester demain et essayer de le modifier pour du type tel avec point.

    j'ai essayer de faire ça mais l’événement ne s’arrête pas et plante mon navigateur...je ne vois pas ou ça cloche.


    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	<label for="telp"> Votre N° Tel:</label>
    	<input type="tel" name="tel" id="telp" onkeyup="verif_tel(this);" maxlength="15" pattern="^[.0-9]+$" value="<?php if (!empty($tel)){echo $tel;} ?>"/>

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    function verif_tel(champ)
      {
    	var chiffres = new RegExp("[0-9]");
    	let verif;
    	let points = 0;
    	let num;
    	let numtel = "";
    	let nochiffre = false;
     
    	for(x = 0; x < champ.value.length; )
    	{
    		//verif si chiffre
                verif = chiffres.test(champ.value.charAt(x));
    			num = champ.value.charAt(x);
     
    		//verif si num = . ou ,	
    			if(num == '.' && (x == 2 || x == 5 || x == 7 || x == 9)){
    					num = '.';
    					nochiffre = true;
    				} else if (num == ',' && (x == 2 || x == 5 || x == 7 || x == 9)){
    					num = '.';	
    					nochiffre = true;
    				} else if (verif == false){
    					num = '';	
    					nochiffre = true;
    				}	
    			if(nochiffre == true){
    				numtel = numtel+num;
    				x--;
    			}				
     
    			if((verif == true || num == '.') && x <= 9 && nochiffre == false){
    			if(x == 2 || x == 4 || x == 6 || x == 8){
    					num = '.'+num;
    			}
    			numtel = numtel+num;
    			x++;
    			}
    			console.log(x);
    			console.log(numtel);
    		if(	x > 9 || x < 0){
    			break;
    		}
    		nochiffre = false;
     
    	}
    	document.getElementById('telp').value = numtel;
      }

  5. #5
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Je confirme, ça boucle jusqu'au plantage du navigateur.

    Il y a beaucoup de conditions pour un formatage et un filtrage des touches.
    Le code proposé plus haut devrait répondre en partie à ce que tu souhaites faire, la seule chose qui diffère est que les points apparaîtront une fois les 10 chiffres saisis.

    Je rajoute ce bout de code qui gérera les touches autorisées pour la saisie. (Ce n'est pas la panacée et il y a surement mieux, mais ça fonctionne)
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       // Les touches autorisées [0-9], Backspace, Delete et Tab pour le champ numéro de téléphone
        champs[0].addEventListener("keydown", function (event) {
          let CodeTouche = (event.which) ? event.which : event.keyCode
     
          if (CodeTouche === 9 || CodeTouche === 8 || CodeTouche === 46) {
            return
          }
     
          if ((CodeTouche > 95 && CodeTouche < 106) || (CodeTouche > 47 && CodeTouche < 58)) {
            return
          } else {
            event.preventDefault();
          }
        })

  6. #6
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 495
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 495
    Par défaut
    quelque chose comme ca ?
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="phone" placeholder="votre numero" />
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    document.getElementById('phone').addEventListener('keyup', function(e) {
    if(e.key === '.') {
    return;
    }
    	let val = this.value.replaceAll('.','');
      val = val.split('').map((x,i) => {
      	if(i > 0 && i%2 === 0) {
        return `.${x}`;
        }
        return x;
      });
      this.value = val.join('');
    });
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

Discussions similaires

  1. Comment afficher entièrement le nom d'un fichier avec input type file
    Par artenis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 09/09/2011, 13h47
  2. Réponses: 4
    Dernier message: 22/08/2006, 15h16
  3. Petit probleme avec <input type="text" .
    Par cyberdevelopment dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/08/2006, 20h17
  4. [AJAX] Ajax avec input type file
    Par cywals dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/08/2006, 09h29
  5. aperçu d image avec input type file marche pas dans ffx
    Par siddh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 09h11

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