Ne permettre la saisie QUE des chiffres (et touches tab, suppr, backspace, ...) [Résolu]

buzza01 5 Messages postés vendredi 8 mai 2009Date d'inscription 22 juillet 2009 Dernière intervention - 22 juil. 2009 à 10:48 - Dernière réponse : buzza01 5 Messages postés vendredi 8 mai 2009Date d'inscription 22 juillet 2009 Dernière intervention
- 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>
Afficher la suite 

9 réponses

Répondre au sujet
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juil. 2009 à 11:00
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juil. 2009 à 11:06
0
Utile
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é
Commenter la réponse de Bul3
buzza01 5 Messages postés vendredi 8 mai 2009Date d'inscription 22 juillet 2009 Dernière intervention - 22 juil. 2009 à 11:11
0
Utile
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.
Commenter la réponse de buzza01
buzza01 5 Messages postés vendredi 8 mai 2009Date d'inscription 22 juillet 2009 Dernière intervention - 22 juil. 2009 à 11:15
0
Utile
Oh autant pour moi, j'ai testé le mauvais champ... Ca marche !! MERCI !!!
Commenter la réponse de buzza01
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juil. 2009 à 11:19
0
Utile
>>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 !
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juil. 2009 à 11:22
0
Utile
ah... croisement des messages...
je me posais des questions
bien qu'étant sûr du code
peut-on l'être jamais totalement ?
Commenter la réponse de Bul3
buzza01 5 Messages postés vendredi 8 mai 2009Date d'inscription 22 juillet 2009 Dernière intervention - 22 juil. 2009 à 11:24
0
Utile
Hehe en effet ^^

Encore merci de ton aide aussi rapide !
Commenter la réponse de buzza01
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juil. 2009 à 11:24
0
Utile
>>autant pour moi
ah non ! c'est "au temps pour moi"
la syntaxe correcte ;o)
Commenter la réponse de Bul3
buzza01 5 Messages postés vendredi 8 mai 2009Date d'inscription 22 juillet 2009 Dernière intervention - 22 juil. 2009 à 11:29
0
Utile
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
Commenter la réponse de buzza01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.