Ne permettre la saisie QUE des chiffres (et touches tab, suppr, backspace, ...)

Résolu
buzza01 Messages postés 5 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 10:48
buzza01 Messages postés 5 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 11:29
Bonjour,

je viens vous voir car je n'arrive pas à faire en sorte que "ma" fonction ne permette la saisie que de chiffres.
Il y a une fonction dans la formObjs#input.chiffres FAQ, dont je me suis plus que largement inspiré mais j'ai dû la modifier pour autoriser l'utilisation d'autres caractères (le numpad, suppr, backspace, ...) et donc utiliser "onkeydown" au lieu de "onkeypress". Le problème maintenant est que quand on autorise la saisie des chiffres (au dessus des lettres, pas ceux du numpad), les caractères &é"'(-è_çà sont aussi autorisés.

Lors de mes recherches, je me suis aperçu que le keyCode et le charCode étaient différents pour "1" et "&" par exemple, et de même pour les caractères suivants. Donc je pense qu'il y a certainement une solution en passant par là, mais je n'arrive pas à trouver comment faire...

Merci d'avance de vos réponses.


La fonction javascript :
function chiffres(event)
{
// Compatibilité IE / Firefox
if(!event&&window.event)
{
event  =window.event;
}
// IE
if((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105) && (event.keyCode !=  8) && (event.keyCode != 9) && (event.keyCode != 35) && (event.keyCode != 36) && (event.keyCode != 37) && (event.keyCode != 39) && (event.keyCode != 46))
{
event.returnValue = false;
event.cancelBubble = true;
}
// DOM
if((event.which < 48 || event.which > 57) && (event.which < 96 || event.which > 105) && (event.which != 8) && (event.which != 9) && (event.which != 35) && (event.which != 36) && (event.which != 37) && (event.which != 39) && (event.which !=  46))
{
event.preventDefault();
event.stopPropagation();
}
}



Et le code html :
<form method  ="post" name="formulaire" action="creer_module_catalogue_script.php" onSubmit="return verifForm(this);">

...

"  style="width:40px; text-align:right;" onkeydown="chiffres(event)">

...

</form>

9 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
22 juil. 2009 à 11:00
Bonjour,
onkeypress plutôt

57) &&
event.keyCode != 8 &&
event.keyCode !0) event.returnValue false;
if((event.which < 45 || event.which > 57) &&
event.which != 8 && event.which != 0 ) return false;">

Cordialement
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
22 juil. 2009 à 11:06
remarque.... le collé du copié/collé

autorise malgré tout autre chose

=> onpaste="return false;" par exemple
ou alors
mémoriser le contenu,
faire le collé
s'il n'y a pas que des chiffres
remettre le contenu mémorisé
0
buzza01 Messages postés 5 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 22 juillet 2009
22 juil. 2009 à 11:11
Bonjour,

Merci de ta téponse Bul3 rapide, mais le problème reste malheureusement le même : la saisie des caractères spéciaux &é"'(-è_çà est toujours possible :(

Pour le copier-coller, les personnes pour qui je développe ne l'utiliseront pas à priori, ce script est plus fait pour éviter l'erreur d'inattention que la volonté d'entrer de mauvaises données.
0
buzza01 Messages postés 5 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 22 juillet 2009
22 juil. 2009 à 11:15
Oh autant pour moi, j'ai testé le mauvais champ... Ca marche !! MERCI !!!
0

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

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
22 juil. 2009 à 11:19
>>mais le problème reste malheureusement le même :
>>la saisie des caractères spéciaux &é"'(-è_çà
>>est toujours possible :(
pas du tout !?!
regarde les tests fait : on autorise uniquement
( >= 45 et <= 57 ) ou = 8 ou = 0
ou alors tu n'essayes pas tel quel ce que j'ai mis !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
22 juil. 2009 à 11:22
ah... croisement des messages...
je me posais des questions
bien qu'étant sûr du code
peut-on l'être jamais totalement ?
0
buzza01 Messages postés 5 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 22 juillet 2009
22 juil. 2009 à 11:24
Hehe en effet ^^

Encore merci de ton aide aussi rapide !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
22 juil. 2009 à 11:24
>>autant pour moi
ah non ! c'est "au temps pour moi"
la syntaxe correcte ;o)
0
buzza01 Messages postés 5 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 22 juillet 2009
22 juil. 2009 à 11:29
En fait les deux sont d'usage, même si "au temps pour moi" est recommandé par l'Académie Française ^^

On dévie
0