Controle du saisie clavier avec javascript

Résolu/Fermé
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010 - 11 déc. 2009 à 19:29
 mimi - 15 mai 2013 à 23:15
Bonjour,
j'ai essayer d'appliquer un code javascript pour faire un controle de saisie sur le champ de petit formulaire que j'ai fait, mais un autre controle est necessaire pour que l'application soit complete donc, j'ai besoin d'un code qui aplique un controle sur tout les entrees clavier de l'utilisateur, le champ est numerique et ne supporte que les entiers et une alerte doit s'afficher des que l'utilisateur entre un autre caractrere, j'ai beaucoup cherche mais je n'arrive a rien, j'ai essayer de le faire avec le onFocus sur le champ mais sans resultat, si quelqu'un peu m'aider parce que je suis encore debutante en javascript. voila le code de mon formulaire accompagne du code javascript qui est pour le moment fonctionnel;

<SCRIPT language="JavaScript">
<!--
function Controle()
{
if(document.formulaire.student_code.value=='') // 1
{
alert('Ce champ ne peut pas rester vide !');
document.formulaire.student_code.focus();
}
else if(isNaN(document.formulaire.student_code.value)) // 2
{
alert('Ce champ ne peut être que numérique !');
document.formulaire.student_code.focus();
}
else if(document.formulaire.student_code.value.length>8) // 3
{
alert('Votre identifiant ne doit pas depasser 8 caractères !');
document.formulaire.student_code.focus();
}
else
{
document.formulaire.method = "POST";
document.formulaire.action = "le_fichier.php";
document.formulaire.submit();
}
}
//-->
</script>

</head>
<body>
<form name="formulaire" >
<p align="center">
<br><br><br>
<b>Entrer le code de l'etudiant : <input type="text" name ="student_code"></b>
<br><br>
<input type="submit" value="Envoyer" onClick="Controle();">
</p>
</form>

15 réponses

Impli Messages postés 235 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 18 août 2013 34
11 déc. 2009 à 19:33
Essaie avec l'évenement OnKeyUp ou OnChange.
Pour vérifier la valeur de ton champ, pense aux regex.

<input type="text" id="machin" name="machin" onkeyup="javascript:ton_js();" value="truc" />
0
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
11 déc. 2009 à 19:48
svp si vous pouvez me renseigner d'avantage est ce que je peux utiliser cette fonction avec le code que j'ai deja fait,
0
Impli Messages postés 235 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 18 août 2013 34
11 déc. 2009 à 19:52
Oui tu peux.
OnKeyUp se déclenche quand on appuie sur une touche du clavier et que l'on est dans le champ en question.
OnChange se déclenche à chaque modification de la valeur du champ.
0
Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
11 déc. 2009 à 19:57
OnChange se déclenche à chaque modification de la valeur du champ.

c'est à dire quand la valeur du champ change et que le champ perd son focus
0
Impli Messages postés 235 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 18 août 2013 34
11 déc. 2009 à 19:59
Exact, j'avais oublié le détail du focus.

Mais je pense qu'il est préferable d'utiliser l'event OnKeyUp pour ce genre de vérif'.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
11 déc. 2009 à 20:13
ok je vais l'essayer, merci,
bien que j'ai besoin d'un code plus complet
0
Impli Messages postés 235 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 18 août 2013 34
11 déc. 2009 à 20:17
<form method="post" action="#">
<input type="text" name="truc" id="truc" value="" onkeyup="javascript:test();"  />
</form>

<script language="javascript">
<!--
function test() {
   if (document.getElementById("truc").value != "bidule") {
      alert("La valeur est différente de bidule.");
   }
}
//-->
</script>


A chaque touche pressée dans le champ truc, si la valeur est différente de bidule, une alerte sera affichée.
0
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
11 déc. 2009 à 20:38
ok merci ca marche bien mais j'ai utiliser une expression reguliere pour interdire une autre valeur que l'entier d'entree mais le msg d'erreur s'affiche meme si j'entre un entier, comment je peut preciser l'intervalle
0
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
11 déc. 2009 à 21:14
le probleme c que le message d'erreur s'affiche meme si je rentre une valeur vraie, voila mon code
function test() {
if (document.getElementById("student_code").value != "0123456789") {
alert("La valeur entree n'est pas correcte.");
}
}


<input type="text" name ="student_code" onkeyup="javascript:test();">
votre aide svp, ca me bloque,
0
Impli Messages postés 235 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 18 août 2013 34
11 déc. 2009 à 21:16
"0123456789" n'est pas une regex (expression régulière).

Ta condition ne sera bonne que si ton champ vaut exactement 0123456789 et rien d'autre.

https://www.commentcamarche.net/contents/585-javascript-l-objet-regexp
0
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
11 déc. 2009 à 21:44
meme si j'entre la valeur 0 en premier lieu l'erreur se declenche j'ai entere cette valeur comme test mais ca ne marche pa
0
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
11 déc. 2009 à 21:52
de limiter la chaine de caractere de cette façon [0-9] comme en fait exactement en c mais aussi la solution n'est pa la bonne, il parait que j'ai commi une erreur dans l'appel du fonction mais je ne trouve ou est exactement cette erreur,
0
Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
11 déc. 2009 à 22:10
[0-9] = \d
Il est donc préférable d'utiliser cette classe plutôt que d'en recréer une identique(c'est plus lisible et surtout plus court) .
Donc le motif qui vérifie un nombre entier est /^\d+$/
Pour un nombre décimale ça serait donc /^\d+\.?\d*$/
0
s'il vous plait pour la chaîne de caractère qu'est ce que en écrit ?
0
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
12 déc. 2009 à 12:32
merci pour cette aide, ca c'est pour le OnkeyUp, mais je pense maintenant a utiliser le en Onkeypress pour interdire l'utilisater a entrer une autre valeur que les entieres, cad que le message d'erreur va s'afficher sans que la valeur errone s'affiche dans le champ de saisie, est ce ue cela peu etre aplicable avec cette fonction ou avec d'autres? malheureusement jusqu'a maintenant je n'ai pas atteint le resultat attendé, il faut que le curseur se bloque et n'ecrit pas la valeur si une autre valeur apart les entiers est presse par l'utilisateur,
0
Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
12 déc. 2009 à 13:24
Tu devrais pouvoir faire ça avec les regex:

<input type="text" onkeyup="this.value = this.value.match(/\d+/);" />
0
merciiii elle ma factionne
0
mais pour la chaîne de caractère ??
0
vertuee Messages postés 17 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 mars 2010
13 déc. 2009 à 21:31
salut, voila j'ai trouve un autre façon de faire ce que je veux et c'est mon code complet ça marche bien maintenant mais sauf que je ne trouve ou je vais placer un message d'alerte qui demande au utilisateur de taper uniquement des entiers, je suis desole si mes questions vous parait bete mais je ne comprend pas grand chose du javascript et j'essai d'avoir un resultat,

<html>
<head>
<title> TP3 Injection SQL </title>
<SCRIPT language="JavaScript">
<!--
function Controle()
{
if(document.formulaire.student_code.value=='') // 1
{
alert('Ce champ ne peut pas rester vide !');
document.formulaire.student_code.focus();
}

else if(document.formulaire.student_code.value.length>8) // 3
{
alert('Votre identifiant ne doit pas depasser 8 caractères !');
document.formulaire.student_code.focus();
}
else
{
document.formulaire.method = "POST";
document.formulaire.action = "check.php";
document.formulaire.submit();
}
}
function codeTouche(evenement)
{
for (prop in evenement)
{
if(prop == 'which') return (evenement.which);
}

return(evenement.keyCode);


}

function scanTouche(evenement)
{
var reCarSpeciaux = /[\x00\x08\x0D]/;
var reCarValides = /[\d]/ ;

var codeDecimal = codeTouche(evenement);
var car = String.fromCharCode(codeDecimal);
var autorisation = reCarValides.test(car);

return autorisation;

}


//-->
</script>

</head>
<body>
<form name="formulaire" onSubmit="Controle();" >
<p align="center">
<br><br><br>
<b>Entrer le code de l'etudiant : <input type="text" name ="student_code" onKeyPress="return scanTouche(event); alert('taper un entier'); "></b>
<br><br>
<input type="submit" value="Envoyer" >
</p>
</form>
</body>
</html>
0