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 :

Contrôle de saisie sur une zone de texte


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Contrôle de saisie sur une zone de texte
    Salut tout le monde,
    je fais un contrôle de saisie sur une zone de texte dans un formulaire. Elle contiendra le nom et prénom d'une personne de telle façon :
    - qu'elle ne soit pas vide.
    -contient un seul espace entre le nom et prénom.
    -formé uniquement par des caractères alphabétiques
    j'ai écrit ce code qui marche pour des chaines comme "mdm rrl" et en marche pas pour d'autres comme "jean valjean".
    S'ils vous plait ou est le problème ?
    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
    <HTML>
    <HEAD>
    <TITLE>Carnets d'adresses</TITLE>
    <SCRIPT language="JavaScript">
    function verif()
    {
    l=window.document.car.np.value.length;
    i=0;
    nb=0;
    do
    {
    i=i+1;
    alert(i);
    if(window.document.car.np.value.charAt(i)==' ')
    {nb++;}
    }while ((((window.document.car.np.value.charAt(i).toUpperCase() >'A') && (window.document.car.np.value.charAt(i).toUpperCase() <'Z'))||
    (window.document.car.np.value.charAt(i)==' ')) && (i<=l-1) && (nb<=1));
     
    if (window.document.car.np.value=="" || nb!=1 || i<=l-1 || window.document.car.np.value.indexOf(" ",1)==-1 )
    { 
    alert("resaisir le nom et le prénom");}
    else
    {alert("cv");}
     
    }
     
     
     
     
    </SCRIPT>
    </HEAD>
    <BODY bgcolor="white grey">
    <font size="26"  color="blue"><center>CARNET D'ADRESSES</center></FONT>
    <br><br><br>
     
    <FORM name="car" >
    Nom et prénom<input type="text" name="np"  size="20" onblur="verif()"    ><br><br>
    Adresse Email : <input type="text" name="email" onblur=""><br><br>
    <input type="button" name="baj" value="Ajouter">
    <input type="button" name="bsu" value="Suprimer">
    <input type="button" name="bre" value="Retrouver adresse mail">
     
    <br><br>
    <select name="pers" >
    <option selected value=" vide  "> Sélectionner un contact    </option>
    </select>
     
    </FORM>
    </BODY>
    </HTML>

  2. #2
    Membre à l'essai
    Bonjour. Concernant ton problème une solution serait de récupérer la valeur du input et de parcourir la chaine avec un compteur qui s'incrémente à la rencontre d'un espace et... Je te laisse le soin de faire le reste.
    PS: une autre solution serait aussi de créer deux inputs, un avec un champ nom et un autre avec prénom je dis ça je dis rien

  3. #3
    Membre à l'essai
    Bonjour
    c'est ce que j'ai fait. il y a un compteur i qui s'incremente dans la boucle do..while

  4. #4
    Expert confirmé
    Schématiquement:

    Code html :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <div>
       <input type="text" id="t" />
    </div>


    Code javascript :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    document.querySelector("#t").addEventListener("change",e=>{
    /* Quand tu quittes le champ, tu vérifies qu'il contient
    deux mots d'une longueur comprise entre 2 et 15 caractères
    */
    	const mess= /^[a-z]{2,15} [a-z]{2,15}$/i.test(e.target.value) ?
    	"Vous êtes\n" + e.target.value :
    	"Erreur de saisie";
    	alert(mess);
    })

  5. #5
    Rédacteur/Modérateur

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <SCRIPT language="JavaScript">


    =>
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <script type="text/javascript">
    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 !

    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  6. #6
    Membre à l'essai
    Merci beaucoup pour vos réponses.
    J'ai fait une erreur d'inattention dans la condition
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    (ch.charAt(i).toUpperCase() >'A')&& (ch.charAt(i).toUpperCase() <'Z')

    et ça doit être
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     (ch.charAt(i).toUpperCase() >='A')&& (ch.charAt(i).toUpperCase() <='Z')
    c a d pour qu'elle accepte le A et le Z

  7. #7
    Expert confirmé
    Je ne comprends pas l'utilité d'une boucle pour contrôler la saisie d'un seul champ

  8. #8
    Modérateur

    Bonjour,
    Citation Envoyé par chrisyk22
    PS: une autre solution serait aussi de créer deux inputs, un avec un champ nom et un autre avec prénom
    je plussoies attendu que j'ai rendez-vous avec Jean Eudes de la Lamotte-Beuvron .

  9. #9
    Expert confirmé
    Bah, on va dire que c'est pour des pseudos (et simples en plus)

  10. #10
    Membre à l'essai
    je suis débutant en javascript et en plus s'il y a une autre méthode autre que celle ci je serais reconnaissant de ma la communiquer.
    Merci

  11. #11
    Expert confirmé
    Je t'ai fourni un script qui fonctionne...

    Le reste du problème n'a rien à voir avec la programmation.
    Tu considères qu'un ensemble Prénom + Nom est constitué de deux blocs de caractères purement alphabétiques: tu te trompes car tu oublies les accents, les traits d'union, les apostrophes voire les espaces multiples.

  12. #12
    Membre à l'essai
    Merci bien Mr
    Puisque dans ma langue les nom et prénoms ne présentent pas des accents et des apostrophes. Il se peut des espaces consécutifs oui .
    En plus le code je ne l'ai pas bien assimilé.
    En tout cas Merci pour votre attention et votre aide

  13. #13
    Expert confirmé
    Citation Envoyé par afifi Voir le message
    le code je ne l'ai pas bien assimilé
    Ben oui mais c'est cadeau: copie-le tel quel et regarde le commentaire dans le script, tu verras déjà si ça marche ou pas...

###raw>template_hook.ano_emploi###