Controle du saisie clavier avec javascript

Résolu
vertuee Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
 mimi -
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>
A voir également:

15 réponses

Impli Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   34
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   34
 
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   Statut Membre Dernière intervention   52
 
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   Statut Membre Dernière intervention   34
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   34
 
<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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   34
 
"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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   52
 
[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
mimi
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   52
 
Tu devrais pouvoir faire ça avec les regex:

<input type="text" onkeyup="this.value = this.value.match(/\d+/);" />
0
mouadha
 
merciiii elle ma factionne
0
mouadha
 
mais pour la chaîne de caractère ??
0
vertuee Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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