J'ai cela maintenant:
<input type="text" placeholder="Paste text" onPaste="alert(this.value);">
Cela affecte un travail, sauf, il renvoie une fenêtre d'alerte vierge. Je n'ai aucune valeur. Aider?
Les incendies onpaste
avant le input
's value
est modifié. Vous avez besoin de quelque chose comme a setTimeout
:
<input type="text" placeholder="Paste text" onPaste="var e=this; setTimeout(function(){alert(e.value);}, 4);">
Je stocke une référence à this
à l'intérieur d'un Var global comme this
n'est pas accessible dans le cadre d'une fonction de délai d'attente qui est connectée à l'objet Window.
J'utilise 4 milisecondes comme timeout car il s'agit du minimum d'intervalle/délai d'attente valide dans la spécification HTML5. Modifier: Comme indiqué dans les commentaires, vous pouvez également utiliser 0
Milisecondes comme délai d'attente qui est automatiquement recalculé sur 4
. ( Tests JSPERF .
Vous pouvez également utiliser un appel de fonction à l'intérieur de votre onpaste
_ _ this
comme paramètre pour empêcher tout mélange HTML avec JS Trop. :)
Et voici une fonction plus facile à lire et que vous pouvez utiliser dans plusieurs entrées:
function pasted(element) {
setTimeout(function(){
alert(element.value);
}, 0); //or 4
}
Ce qui peut être appelé simplement onPaste="pasted(this)"
pour toute entrée.
Ceci est parce que les incendies onpaste
avant Le contenu est collé dans l'élément ( link ). Pas encore au moment où vous le gérez.
Les navigateurs modernes prennent en charge les méthodes d'obtention de données de presse-papiers à l'intérieur du gestionnaire d'événements. Reportez-vous à JavaScript Obtenir des données de presse-papiers de presse-papiers sur Coller (navigateur croiseur) pour tentatives de solution croisée croisée.
De plus, vous pouvez toujours contourner votre problème en démarrant simplement une minuterie dans la fonction de gestionnaire d'événements (10 ms devrait suffire) de vérifier votre valeur d'entrée ultérieurement.