11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je cherche a controller les saisies dans un formulaire.
Le problème survient pour un copier-coller déclenché via un clic droit de souris, ou par le menu d'édition.

Sous IE pas de problème, avec l'evenement onpaste + une lecture du presse papier.

Sous mozilla, rien de tout ca n'est possible...

Alors j'ai 2 questions :
- Y a t'il un moyen de savoir lorsque l'utilisateur colle quelque chose ?
- Plus généralement, existe-il un évenement qui se déclenche dès qu'une modification survient dans un champs.
Attention je ne parle pas de l'évènement onChange (qui s'apparente a onBlur). Je cherche plutôt un évenement ressemblant à onKeyPress, mais qui prend en compte n'importe quelle entrée (pas que le clavier).

Merci
Salut,

l'evenement "paste" n'existe pas dans le standard HTML il faut donc passer par autre chose.

Tu veux controler et valider le contenu au fur et à mesure du remplissage (de quelque manière que se soit : coller du texte, tapper sur le clavier ...) pour par exemple spécifier le niveau de sécurité d'un mot de passe.

La seule manière existante est d'executer non pas sur tout les evenement disponible ("blur", "keyDown", ...) mais sur le temps ...
Une fonction va être executé lors que le champs est selectionné (sinon ça sert pas à grand chose) tout les disons ... 20ms pour verifier le contenu. Ce temps élevé (50 fois par secondes) va permettre à l'utilisateur de ne pas voir de lattence (l'oeil ne vois que 24 fois par secondes).

Cependant le traitement du contenu peut être assez lourd, donc alternativement tu fait déja une comparaison avec le précédent état et seulement ensuite si le contenu diffère de vérifier le contenu.

Voila Smiley smile
ok je te remercie.
Ca m'arrange pas du tout car c'est un traitement assez lourd.
Je trouve ca nul qu'il n'existe pas un évenement oninput...
ce serait tellement pratique de savoir dès qu'un caractère entre dans un champs, quelque soit la manière...mais bon...
Je ne sais pas si ça va t'aider, mais dans un de mes formulaires qui effectuait une requete SQL en Ajax à chaque saisie au clavier, si on tapait très vite on pouvait passer au travers (je vérifie l'existence d'un login dans la creation de compte).
J'ai grugé en lançant la fonction associée au onKeyUp du champ en question depuis d'autres fonctions Javascript vérifiant d'autres champ de mon formulaire.
Modifié par Ondskapt (17 Aug 2007 - 09:57)
Pour eviter justement que l'on passe à travers une saisie rapide (plus rapide que 20ms, faut être vraiment rapide), il suffit de verifier avant envois comme ça si les données sont fausses on ne peut pas envoyer celles-ci, même si on est super rapide ...