Je cherche un moyen de filtrer les entrées que je colle dans le navigateur, est-ce possible avec jQuery?
J'ai réussi à trouver cela jusqu'à présent:
$(this).live(pasteEventName, function(e) {
// this is where i would like to sanitize my input
return false;
}
Malheureusement, mon développement est arrivé à un point d'arrêt à cause de ce problème "mineur". Je ferais vraiment de moi un campeur heureux si quelqu'un pouvait m'orienter dans la bonne direction.
Réponses:
OK, je suis juste tombé sur le même problème .. J'ai parcouru le long chemin
Juste un petit timeout jusqu'à ce que func .val () puisse être rempli.
E.
la source
Vous pouvez réellement saisir la valeur directement de l' événement . C'est un peu obtus comment y arriver.
Retournez false si vous ne voulez pas que cela passe.
la source
e.clipboardData.getData('text')
en JavaScript.Pour la compatibilité multiplateforme, il doit gérer les événements oninput et onpropertychange:
la source
Je l'ai en quelque sorte corrigé en utilisant le code suivant:
Maintenant, j'ai juste besoin de stocker l'emplacement du curseur et de l'ajouter à cette position, alors je suis prêt ...
la source
.find(':focus')
et savoir que cet élément détermine l'emplacement du curseur pour lui. Regardez ça .input
fait la différence :) Je les ai normalement dans mes événements de zone de texte,keyup keydown paste input
mais cela dépend évidemment de vos motivationsHmm ... Je pense que vous pouvez utiliser
e.clipboardData
pour attraper les données collées. Si cela ne fonctionne pas, jetez un œil ici .la source
Écoutez l'événement coller et définissez un écouteur d'événement keyup. À la clé, capturez la valeur et supprimez l'écouteur d'événement de clé.
la source
Cela fonctionnera bien.
la source
Cela se rapproche de ce que vous pourriez souhaiter.
Veuillez noter que lorsque l'objet clipboardData n'est pas trouvé (sur les navigateurs autres qu'IE), vous obtenez actuellement la valeur complète de l'élément + la valeur du presse-papiers.
Vous pouvez probablement faire quelques étapes supplémentaires pour dif les deux valeurs, avant une entrée et après l'entrée, si vous êtes vraiment seulement après quelles données ont vraiment été collées dans l'élément.
la source
Cela fonctionnera pour l'événement de collage de souris.
la source
Que diriez-vous de comparer la valeur d'origine du champ et la valeur modifiée du champ et de déduire la différence comme valeur collée? Cela capture le texte collé correctement même s'il existe du texte dans le champ.
http://jsfiddle.net/6b7sK/
la source
Ce code fonctionne pour moi, soit coller à partir du clic droit, soit copier coller directement
Quand je le colle,
Section 1: Labour Cost
il devient1
dans la zone de texte.Pour autoriser uniquement la valeur flottante, j'utilise ce code
la source
Plus loin:
la source
Voir cet exemple: http://www.p2e.dk/diverse/detectPaste.htm
Il suit essentiellement chaque changement avec un événement oninput, puis vérifie s'il s'agit d'une comparaison de collage par chaîne. Oh, et dans IE, il y a un événement onpaste. Alors:
la source
Cette méthode utilise jqueries contents (). Unwrap ().
Après un délai donné, parcourez toutes les balises de déballage du contenu qui n'ont pas la classe que vous avez définie plus tôt. Remarque: Cette méthode ne supprime pas les balises à fermeture automatique comme
voir un exemple ci-dessous.
la source
Cela s'est révélé assez illusoire. La valeur de l'entrée n'est pas mise à jour avant l'exécution du code à l'intérieur de la fonction d'événement coller. J'ai essayé d'appeler d'autres événements à partir de la fonction d'événement de collage, mais la valeur d'entrée n'est toujours pas mise à jour avec le texte collé dans la fonction des événements. C'est tous les événements à l'exception de keyup. Si vous appelez keyup depuis la fonction d'événement coller, vous pouvez nettoyer le texte collé depuis la fonction d'événement keyup. ainsi...
Il y a une mise en garde ici. Dans Firefox, si vous réinitialisez le texte d'entrée à chaque saisie, si le texte est plus long que la zone visible autorisée par la largeur d'entrée, la réinitialisation de la valeur à chaque saisie interrompt la fonctionnalité du navigateur qui fait défiler automatiquement le texte jusqu'à la position du curseur au fin du texte. Au lieu de cela, le texte revient au début, laissant le curseur hors de vue.
la source
Script pour supprimer les caractères spéciaux de tous les champs avec la classe portlet-form-input-field:
la source
la source