Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks
Bibliothèques & Frameworks Forum d'entraide sur les frameworks et bibliothèques JavaScript (jQuery, Mootools, Prototype, Script.aculo.us, etc.). Avant de poster : Cours Frameworks JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2011, 09h15   #1
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Par défaut Fonction JS pour saisir seulement des chiffres

Bonjour tout le monde

Je souhaite faire un fonction en JS qui me permette de contrôler la saisie dans mes formulaires.

J'ai trouvée une fonction qui fait sa très bien :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
onKeypress="if(!isNS4)
{
if(event.keyCode < 45 || event.keyCode > 57)
event.returnValue = false;
}
else
{
if(event.which < 45 || event.which > 57)
return false;
}"
Mais elle marche trop bien cette fonction car elle ne me laisse même pas saisir ma virgule quand c'est une nombre a virgule (attention c'est bien une virgule non un point que je dois autorizé)

Merci de votre aide

ha oui il y a d'autre partie de code :
Code :
1
2
3
4
5
6
7
 
<script>
//verify for netscape/mozilla
 
var isNS4 = (navigator.appName=="Netscape")?1:0;
 
</script>
Voila je crois que j'ai rien oublié
Merci
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 09h37   #2
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
En gros tu veux qu'on fasse la recherche pour toi c'est ça ?

=> http://lmgtfy.com/?q=javascript+keycode
=> http://www.cambiaresearch.com/c4/702...Key-Codes.aspx
=> http://www.asquare.net/javascript/tests/KeyCode.html

PS :
Le premier lien est en anglais mais je te laisse le soin de toi-même rechercher dans un dictionnaire ou sur un site de traduction comment on dit 'virgule'.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 11h49   #3
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Loceka je trouve que tu es quand même un peu dur

j'ai quand même montré que j'avais fait des recherches ...

pour la virgule
le event.which est 44 et le event.keyCode est 0

Pour la touche Del
le event.which est 8 et le event.keyCode est 8

malgret sa je n'arrive pas à modifier le code pour y ajouter ces modifications

mon code actuelle est :
Code :
1
2
3
4
5
6
7
8
 
onKeypress="if(!isNS4)
{
if(event.keyCode == 8 || event.keyCode == 0) event.returnValue = false;
}
else{if(event.which == 8 || event.which == 44 || event.which == 48 || event.which == 49 || event.which == 50 || event.which == 51 || event.which == 52 || event.which == 53 || event.which == 54 || event.which == 55 || event.which == 56 || event.which == 57)
return false;
}"
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 12h16   #4
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Citation:
Envoyé par teen6517 Voir le message
pour la virgule
le event.which est 44 et le event.keyCode est 0

Pour la touche Del
le event.which est 8 et le event.keyCode est 8
Malheureusement c'est pas si simple

Teste plusieurs navigateurs avec cette page : http://www.asquare.net/javascript/tests/KeyCode.html

Ce que tu as dit est vrai pour Firefox, ça ne l'est pas pour IE ni Opera (j'ai pas testé les autres).

Code :
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
/* Virgule : */
/*       Virgule       */
// IE :
                 onKeyDown   onKeyPress  onKeyUp
event.keyCode  : '188'       '44'        '188'
event.which    : 'undefined' 'undefined' 'undefined'
 
// FF :
                 onKeyDown   onKeyPress  onKeyUp
event.keyCode  : '188'       '44'        '188'
event.which    : '188'       '44'        '188'
 
// Opera :
                 onKeyDown   onKeyPress  onKeyUp
event.keyCode  : '188'       '44'        '188'
event.which    : '188'       '44'        '188'
 
/*      Backspace      */
// IE :
                 onKeyDown   onKeyPress  onKeyUp
event.keyCode  : '8'                     '8'
event.which    : 'undefined'             'undefined'
 
// FF :
                 onKeyDown   onKeyPress  onKeyUp
event.keyCode  : '8'         '8'         '8'
event.which    : '8'         '8'         '8'
 
// Opera :
                 onKeyDown   onKeyPress  onKeyUp
event.keyCode  : '8'         '8'         '8'
event.which    : '8'         '8'         '8'
Tu ne peux donc pas utiliser keyPress sur IE pour détecter l'effacement.

Sinon une fois que tu connais les codes à utiliser c'est relativement simple :
Code :
1
2
3
4
5
6
7
8
onKeypress="if(!isNS4) {
  if(event.keyCode != 8 && (event.keyCode < 44 || event.keyCode > 57))
    event.returnValue = false;
}
else {
  if(event.which != 8 && (event.which < 44 || event.which > 57))
    return false;
}"
Mais encore une fois, fais-le sur un autre événement que keyPressed
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 13h20   #5
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
moi je n'ai trouvé que
onKeyDown et onKeyUp

et onKeyPress qui d'après se que j'ai compris fait l'union des des deux précédent

tu conseil d'utilisé quoi??
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 14h10   #6
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Le plus simple serait d'utiliser onKeyDown, un return false empêcherait l'écriture du résultat.

Par contre les "codes" seraient différents, comme tu peux le voir. Pour la virgule ce serait 188 au lieu de 44 par exemple.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h37.


 
 
 
 
Partenaires

Hébergement Web