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 :

tester un numero de téléphone dans <form>


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut [résolu]tester un numero de téléphone dans <form>
    Bonjour,

    je suis de passage sur le forum pour trouver un soutien à mon apprentissage du javascript, je débute et après avoir lu un tuto sur la vérification des formulaires j'ai tester de faire mon petit script mais sans résultat.

    voila mon script:

    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
    	 		<script language="JavaScript">
    function checknum() {
     
    var mess = "erreur";
     
    if (document.formulaire.tel.value != "")	{
    var prefix = (document.formulaire.tel.value.substring(0,2));
    var numero = (document.formulaire.tel.value);
    var verif = numero.lenght;
    if ((isNaN(numero))||(prefix != 01)&&(prefix != 02)&&(prefix != 03)&&(prefix != 04)&&(prefix != 05)&&(prefix != 06)) {
    alert(numero.length);
    }
    }
    }
    </script>
    J'édit mon post car je suis parvenu à un résultat en faisant des modifications parcontre je ne parviens toujours pas à calculer la longueur de la chaine, j'ai du mal avec les && et les || et les priorités à l'aide !!!!!!!!!!!!

    voila donc le nom de mon champ étant "tel" parcontre veuillez m'excuser je n'ai pas trouvé les balises pour le script.
    Merci d'avance !

  2. #2
    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
    Euh... tu veux juste tester un numéro de téléphone ???
    Ton script n'est pas trop optimisé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function checknum(num){
        var valide = /^0[1-6]\d{8}$/;
        if(valide.test(num){
            alert('Bon numéro !');
        }
        else{
            alert('Mauvais numéro !');
        }
    }
    Donc, tu crées une expression régulière avec 0 comme premier caractère, puis un chiffre entre 1 et 6 puis huit chiffres quelconques.
    Ensuite, si ton champ correspond à cette expression c'est bon, sinon, c'est pas bon
    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

  3. #3
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Merci bovino,

    mais malheureusement il y un "mais", j'ai pas tout compris. 'avais vaguement entendu parler des expressions régulières mais je n'ai jamais abordé ce sujet, donc j'ai tout simplement copier/collé ta fonction j'ai fais juste un test avec "06abcdefg"et pas d'alerte donc j'ai pas bien saisie, peux tu me donner d'autre explication?

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut manque parenthèse
    L'a tapé trop vite son exemple, il manque une parenthèse;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function checknum(num){
        var valide = /^0[1-6]\d{8}$/;
        if(valide.test(num)){
            alert('Bon numéro !');
        }
        else{
            alert('Mauvais numéro !');
        }
    }
    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Oui c'est ce que j'ai vu je l'ai modifié mais ça ne marche pas quand même, j'ai fais plusieurs tests notament avec 0122334455 et quelque soit le numéro saisie j'ai l'alert du mauvais numéro qui s'ouvre! moi plus comprendre!

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Impossible !
    C'est tout simplement impossible !

    L'expression /^0[1-6]\d{8}$/ traduit exactement cela:

    "la valeur de la chaine testée commence par un 0, suivi d'un chiffre de 1 à 6, suivi ensuite par exactement 8 chiffres"

    Attention, aucune place à l'erreur: notamment pas d'espace ni au début ni à la fin, pas de point comme séparateur, etc...

    Si cela ne marche toujours pas, poste ton code qu'on regarde où est ton erreur.

    ERE
    Quand une tête pense seule, elle devient folle.

  7. #7
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    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
     
    	 		<script language="JavaScript">
    function checknum(num){
        var valide=/^0[1-6]\d{8}$/;
        if(valide.test(num)){
            alert('Bon numéro !');
        }
        else{
            alert('Mauvais numéro !');
        }
    }
    </script>
     
    <input type="text" name="tel" onblur="checknum('num');"/>
    voila le code tel quel (copié/collé) encore merci.

    edit: tout ça se passe en local j'ai pas essayé mis en ligne je vais tester tiens.
    edit2: même en ligne rien y fait.

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Pan !
    Tu passes une chaine 'num', il faut passer la valeur contenue dans la boite de texte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" name="tel" onblur="checknum(this.value);"/>
    ERE
    Quand une tête pense seule, elle devient folle.

  9. #9
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    arf! merci ERE, pour moi la fonction prennait en compte l'argument je suppose que c'est le même principe si je fait une expression régulière pour le champ mail ?

    sinon j'avais fait ça pour le mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		if (document.formulaire.mail.value != "")	{
    		indexAroba = document.formulaire.mail.value.indexOf('@');
    		indexPoint = document.formulaire.mail.value.indexOf('.');
    		if ((indexAroba < 0) || (indexPoint < 0))		{
    		document.formulaire.mail.style.backgroundColor = "#cfe1fc";
    			msg += "Le mail est incorrect\n";
    		}
    	}
    Est que c'est optimal ?

  10. #10
    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
    @emmanuel.remy : Merci pour la correction

    @ xess91 : Pour une adresse mail, c'est plus compliqué, il ne suffit pas de tester juste l'@ et le .
    Une bonne regexp (c'est-à-dire qui prend en compte l'eesentiel, mais qui peut être mis à défaut si l'on prend en compte la syntaxe d'adresse la plus large...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mail = /^[a-z0-9]([a-z0-9._-]*[a-z0-9])*@[a-z0-9]([a-z0-9._-]*[a-z0-9])*[.][a-z]{2,4}$/i;
    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

  11. #11
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Bovino peux-tu me d'écrir ton expression régulière afin que j'en comprenne bien toute la suptilité ?

    Merci d'avance. chouette ce forum

  12. #12
    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
    * ^commence par
    * [a-z0-9] : un chiffre ou une lettre
    * ( puis une sous chaine
    * [a-z0-9._-]* chiffres, lettres, caractères '.', '_', '-'
    * [a-z0-9] la sous chaine fini par une lettre ou un chiffre obligatoirement
    * )* fin de la sous chaine, présente 0 fois ou plus
    * le caractère '@'
    * [a-z0-9]([a-z0-9._-]*[a-z0-9])* comme précédemment
    * [.] un point
    * [a-z]{2,4} entre 2 et 4 caractères alphabétiques
    * $/ fin de la chaine
    * i les caractères alphabétiques ne prennent pas en compte la casse (maj / min)
    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

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

Discussions similaires

  1. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 12h45
  2. Tester l'existence d'un control dans une form
    Par Naruseb dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/08/2006, 18h30
  3. Facilité de tester les types de champs dans un FORM ?
    Par shadeoner dans le forum Langage
    Réponses: 5
    Dernier message: 30/03/2006, 20h49
  4. Comment mettre le même TMainMenu dans plusieurs Form ?
    Par gmc dans le forum Composants VCL
    Réponses: 6
    Dernier message: 12/08/2004, 21h03
  5. [servlet][formulaire] utilisation de 2 servlet dans 1 form
    Par luc_pichot dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/05/2004, 17h55

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