bloquer une patie du clavier

bloquer une patie du clavier - HTML/CSS - Programmation

Marsh Posté le 06-06-2009 à 00:31:45    

Bsoir à tous! Je voudrais savoir comment je peux bloquer le clavier alphabétique en javascript pour des champs de type numérique seulement.
Merci d'avance.


Message édité par kazerson le 06-06-2009 à 00:32:56
Reply

Marsh Posté le 06-06-2009 à 00:31:45   

Reply

Marsh Posté le 06-06-2009 à 01:14:45    

Tu peux utiliser l'evenenement onChange, ou onKeyDown qui est ptetre plus utile dasn ce cas. Attention par contre au compatibilité entre browsers.
Ya un semblant de tuto ici : http://www.w3schools.com/jsref/jsref_onkeydown.asp


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 06-06-2009 à 02:11:37    

je regarde tout de suite merci

Reply

Marsh Posté le 06-06-2009 à 02:35:26    

Bonjour,
 
tu vas bloquer certains utilisateurs de ton site en faisant ça :/ (lecteurs d'écran, portables sans souris manipulés au clavier, extensions genre Nukemall pour ce qui me vient à l'esprit mais doit y en avoir d'autres)
Tu ferais mieux d'accepter que le caractère soit frappé mais tu l'effaces aussi sec de ton champ (avec petite explication à côté de ton champ sur le pourquoi du refus)

Reply

Marsh Posté le 06-06-2009 à 02:43:23    

Je voulais en fait même jute la fonction JS qui me permet de savoir qu'un caractère est soit Numérique, alphabétique ou alphanum

Reply

Marsh Posté le 06-06-2009 à 02:56:29    

Pour ca tu peux utiliser la fonction parseInt :

Code :
  1. parseInt ("Chaine" );  // renvoit NaN, soit "Not A Number" (voir alors la fonction isNaN () ), plus d'infos sur google ;)
  2.  
  3. parseInt (10); // renvoit 10
  4.  
  5. parseInt ("10chaine" );  // piège car ca renvoit 10 !!!
  6.  
  7. parseInt ("chaine10" );  // renvoit NaN


Sinon tu peux utiliser des expressions régulières comme ca :

Code :
  1. var isNumeric = function (value)
  2. {
  3.     return (/(^\d+$)|(^\d+\.\d+$)/.test (value));
  4. }
  5.  
  6. isNumeric ("10abc" ); // false
  7. isNumeric ("abc10" ); // false
  8. isNumeric (10); // true
  9. isNumeric ("10" ); // true


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 06-06-2009 à 03:06:13    

Voila c'est ça même! Mais expressions reg
return (/(^\d+$)|(^\d+\.\d+$)/.test (value));
je vais revoir. Merci bouceaup


Message édité par kazerson le 06-06-2009 à 03:06:49
Reply

Marsh Posté le 06-06-2009 à 03:27:11    

On dirais qu'il y a pb o niveau de .test (value). "test" est-elle une fonction prédéfinie?


Message édité par kazerson le 06-06-2009 à 03:27:41
Reply

Marsh Posté le 06-06-2009 à 03:39:11    

Oui, ca fait partie de l'attirail JS concernant les expressions régulières : http://www.cybwarrior.com/FR/JavaS [...] ieres.html
 
La fonction isNumeric que je t'ai filé est sensé fonctionner comme il faut, car je l'utilise depuis qq temps déjà ;)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 06-06-2009 à 21:07:45    

Peut être je n'arrive pas à bien utiliser cette fonction
 


Message édité par kazerson le 06-06-2009 à 21:11:12
Reply

Marsh Posté le 06-06-2009 à 21:07:45   

Reply

Marsh Posté le 06-06-2009 à 22:17:43    

Balances le code que tu as pour l'instant si tu veux.


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 06-06-2009 à 22:23:40    

JS: j'ai modifier ainsi:

Code :
  1. function isNumeric (value)
  2. {
  3.     return (/(^\d+$)|(^\d+\.\d+$)/.test (value));
  4. }
  5. function test(valeur)
  6. {
  7.   if(isNumeric(valeur)) 
  8.   alert("oui" ) ;
  9.   else
  10.   alert("Non" ) ;
  11. }
 

et html:

 
Code :
  1. Num tel: <input type="text" size="10" name="num" onkeypress="test(document.maforme.num.value)"/>
 

La ça marche! Je voulais maintenant aller un peu loin en faisant ceci:
Lorsque tu appuis sur une touche alpha, rien ne s'affiche dans le input sauf quand c'est une touche num

 



Message édité par kazerson le 06-06-2009 à 22:26:54
Reply

Marsh Posté le 06-06-2009 à 23:02:24    

Prends ce bout de code (testé sous Firefox et IE), tu as ce qu'il te faut je pense.
Il fait en sorte que aucun chiffres ne soient saisies :

Code :
  1. <html>
  2. <head>
  3.     <script type="text/javascript">
  4.         function isNumeric (value)
  5.             {
  6.                 return (/(^\d+$)|(^\d+\.\d+$)/).test (value);
  7.             }
  8.  
  9.         /*    Gestion du onKeyPress.
  10.             "event" est passé automatiquent par le browser à la fonction (sauf dasn le cas de IE, voir plus bas).
  11.             Dans le cas d'un evenement JavaScript, le fait de retourner false (FAUX) stop le processus lié à celui-ci, ce qui dans notre cas empeche le caractere d'être saisie !
  12.         */
  13.         function keyPressHandler (event)
  14.             {
  15.                 event = event || window.event;    // si event n'existe pas, on est sous IE, et pour IE un evenement est global...
  16.                 var car = String.fromCharCode (event.charCode || event.keyCode); // charCode pour le standards ou keyCode pour IE
  17.                 return !isNumeric (car);  // isNumeric renvoit vrai s'il s'agit d'un chiffre, or nous ne voulons pas de chiffres, donc nous inversons le résultat avec un "!".
  18.             }
  19.     </script>
  20.  
  21. </head>
  22. <body>
  23.     <form>
  24.         saisir texte : <input type="text" onkeypress="return keyPressHandler (event);" />
  25.     </form>
  26. </body>
  27. </html>


 
Si tu veux le contraire (QUE des chifrres), remplace la ligne 17 par "return isNumeric (car);" (càd sans le "!" )


---------------
We deserve everything that's coming...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed