[JS] Pas de detection de touche Suppr

Pas de detection de touche Suppr [JS] - HTML/CSS - Programmation

Marsh Posté le 03-04-2007 à 12:01:41    

Bonjour à vous,

 

j'ai une question à propos de la détéction de la touche suppr dans un champ de texte, dans lequel j'utilise du js pour autoriser uniquement les caractères min et maj et les chiffres. J'utilise les codes ascii pour detecter les touches, avec comme touches autorisées le backspace et la touche del (suppr)

 

Seulement tous les caractères (min et maj) et chiffres marchent, ainsi que le backspace, mais pas le suppr :/

 

Je sais qu'il est difficille de récuperer les touches inser, home, les fleches etc...(voir les sujets à lire...) mais d'apres http://www.asciitable.com la touche suppr a comme code 127 et je ne vois pas en quoi cela differerait du backspace

 

Voici le code de mon input texte :

 
Code :
  1. <input type="text" name="caracOnly" onKeypress="
  2. if(
  3.  event.which >= 48 && event.which <= 57 ||
  4.  event.which >= 65 && event.which <= 90 ||
  5.  event.which >= 97 && event.which <= 122 ||
  6.  event.which == 8 ||
  7.  event.which == 127
  8. )
  9. {
  10.  return true;
  11. }
  12. else
  13. {
  14.  return false;
  15. }
  16. ">
 

Je ne vois pas pourquoi mon code ne marche pas, si vous pouvez m'eclairer !!

 

Merci


Message édité par Doc_Gloumy le 03-04-2007 à 12:03:00
Reply

Marsh Posté le 03-04-2007 à 12:01:41   

Reply

Marsh Posté le 03-04-2007 à 12:03:39    

juste pour etre sur, comment ca se passe , si l'utilisateur fait clic droit-> coller ?

Reply

Marsh Posté le 03-04-2007 à 12:06:36    

ça rentre le caractère, mais ce n'est pas important qu'il puisse le faire car il y a une autre verification en php derrière.
Ce que je veux c'est une simple vérification lors de la saisie, si l'utilisateur rentre des caractères au copier collé ils seront evacués par la suite :)

Reply

Marsh Posté le 03-04-2007 à 13:40:08    

De mémoire tu ne peux pas récupérer la touche pressée de la même façon sous IE et FF, du coup il faut faire un truc dans le genre:

Code :
  1. function prout(event){
  2.   var keyCode = window.event.keyCode?window.event.keyCode:event.which;
  3.   /*** test sur le key code et retour en fonction ***/
  4.   return true/false;
  5. }
  6. ...
  7. <input ... onkeypress="return prout(event)"/>


et vaut ptet mieux le faire sur le keydown que sur le press.

Message cité 1 fois
Message édité par anapajari le 03-04-2007 à 13:40:35
Reply

Marsh Posté le 03-04-2007 à 15:54:01    

anapajari a écrit :

De mémoire tu ne peux pas récupérer la touche pressée de la même façon sous IE et FF, du coup il faut faire un truc dans le genre:
[...]
et vaut ptet mieux le faire sur le keydown que sur le press.


Oui tu a raison au passage mon code ne marche que sous FF
celui ci marche sous IE7 et FF :

Code :
  1. <input type="text" name="txtTelephone" onKeypress="
  2. if(
  3.  ( event.which < 48 || event.which > 57 )
  4.  &&
  5.  ( event.which < 65 || event.which > 90 )
  6.  &&
  7.  ( event.which < 97 || event.which > 122 )
  8.  &&
  9.  ( event.which != 8 )
  10. )
  11. {
  12.  return false;
  13. }
  14. if(
  15.  ( event.keyCode < 48 || event.keyCode > 57 )
  16.  &&
  17.  ( event.keyCode < 65 || event.keyCode > 90 )
  18.  &&
  19.  ( event.keyCode < 97 || event.keyCode > 122 )
  20. )
  21. {
  22.  event.returnValue = false;
  23. }
  24. ">


 
Sous IE7 (edit : idem sous IE6) les touches fleches, home inser suppr fin backspace marchent sans avoir à ajouter les codes ascii, sous firefox je n'arrive à faire marcher que le backspace :/


Message édité par Doc_Gloumy le 03-04-2007 à 16:27:41
Reply

Marsh Posté le 04-04-2007 à 11:02:09    

Tu devrais voir si la lib Prototype ne propose pas une gestion unifiée des événements clavier...

Reply

Sujets relatifs:

Leave a Replay

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