Javacript

From Mesdoc

Revision as of 10:33, 24 July 2006 by 81.80.101.92 (Talk)
(diff) ←Older revision | view current revision (diff) | Newer revision→ (diff)

Le copier-couper-coller et la vérification a posteriori

Maintenant que nous savons intercepter et contrôler les saisies utilisateur se pose encore un problème. Pourquoi se priver du copier-coller (ctrl+V, ctrl+C, ctrl+X) et de la fonction d'annulation (ctrl+Z)? D'autant plus que notre script fonctionnera aussi bien dans un champ input que dans un champ textarea.

Et bien évidemment, la solution n'est pas simple si l'on souhaite apporter un minimum de portabilité:

   * Pour Netscape 4, pas de gros problèmes puisque toutes ces actions ne génèrent pas d'évènement keyPress
   * Pour Interner Explorer, l'utilisation de ces actions génère un évènement keyPress, mais il n'est pas annulé par notre blocage. Tant que le blocage ne fait rien d'autre qu'annuler la saisie, on peut donc passer outre, mais si vous avez prévu par exemple une fenêtre d'alerte, il faut prévoir cette éventualité. Les codes des combinaisons de touche sont les suivants:
         o Copier Ctrl + C 3 (hex 03)
         o Cut Ctrl + X 22 (hex 16)
         o Paste Ctrl + V 24 (hex 18)
         o Undo Ctrl + Z 26 (hex 1A)
     Rien de plus facile dans ce cas que de les inclure dans notre expression régulière des caractères spéciaux, qui devient: var reCarSpeciaux = /[\\x00\\x08\\x0D\\x03\\x16\\x18\\x1A]/;
   * Pour Netscape 6 et +, la situation se complique. L'utilisation du copier-coller génère un évènement keyPress. Seul problème, la valeur renvoyée est celle du caractère correspondant (c,v,x ou z). Pour faire la différence, le navigateur renseigne une propriété supplémentaire de l'objet event. Il s'agit de ctrlKey qui prend la valeur true ou false selon que la touche control est enfoncée en même temps ou pas. Malheureusement, cette spécificité va nous alourdir quelque peu notre code:

Exemple:

Personal tools