Comment obtenir la valeur copiée à partir du ctrl+v événement clé en javascript
Cette méthode détecte les touches ctrl + v mais je ne pourrais pas trouver comment faire pour obtenir la valeur de celui-ci ?
Merci d'avance,
$(".numeric").keydown(function (event) {
if (event.shiftKey) {
event.preventDefault();
}
switch (event.keyCode) {
case 86:
if (event.ctrlKey) { //detects ctrl + v
var value = $(this).val();
alert(value); //returns ""
}
break;
}
Qu'entendez-vous par valeur le texte exact qui a été copié?
Oui j'ai besoin que le texte est copié. Si je l'obtiens, plus tard, je fais un peu de validation et de le mettre sur la zone de texte
Donc tu veux dire que le inséré de la valeur? Peut-être modifier la formulation pour que
J'ai copié une partie de texte sur n'importe où, alors je veux le coller dans la zone de texte (: c'est ça. Oui, on peut dire aussi valeur insérée. Merci pour votre intérêt.
Oui j'ai besoin que le texte est copié. Si je l'obtiens, plus tard, je fais un peu de validation et de le mettre sur la zone de texte
Donc tu veux dire que le inséré de la valeur? Peut-être modifier la formulation pour que
J'ai copié une partie de texte sur n'importe où, alors je veux le coller dans la zone de texte (: c'est ça. Oui, on peut dire aussi valeur insérée. Merci pour votre intérêt.
OriginalL'auteur Barış Velioğlu | 2011-10-01
Vous devez vous connecter pour publier un commentaire.
Tout ce que vous avez à faire le crochet dans la pâte de l'événement, laissez-le terminer par la rupture de la pile des appels, puis lire la valeur.
Il peut sembler laid, mais il est très crossbrowser amicale et vous permet d'économiser de créer un grand nombre de code de merde juste pour lire la réelle presse-papiers.
Le voir en action ici: http://jsfiddle.net/Yqrtb/2/
Mise à jour:
Depuis que j'ai juste eu récemment à faire quelque chose de similaire, j'ai pensé que je devais partager mon final de mise en œuvre, il va comme ceci:
Vous faites beaucoup d'horrible code complexe à lire le presse-papiers. Sérieusement tho, depuis le cassé de la pile rend la lecture des données se passer de moins de 1 ms après le collage, vous pouvez simplement lire après le fait, définissez la valeur de rien, de modifier la valeur et de re-définir votre auto. l'utilisateur ne sera pas la plus sage et que vous avez une solution de facilité.
J'ai fait une mise à jour de violon pour vous montrer comment modifier l'entrée: jsfiddle.net/Yqrtb/3 - à partir d'une expérience utilisateur point de vue, le changement se produit avant que l'collé valeur est toujours inséré dans le champ.
+1, je suis pour une solution simple, qu'à la fin, les œuvres étant donné les besoins. Cependant, cette solution genre de masques ce qui se passe réellement (ce qui pourrait être une mauvaise chose AFA réellement comprendre comment les choses fonctionnent), et pourrait ne pas couper si vous avez besoin de traiter une grande quantité de données collées et faire d'autres choses dans d'autres éléments dans l'INTERFACE utilisateur.
dans la plupart des cas, vous pouvez obtenir le long avec la sauvegarde de l'ancienne valeur dans le cas handlerand puis réinitialiser le champ de saisie pour que la valeur tout en vous processus à l'intérieur de la fonction de délai. et vraiment si vous avez besoin de faire le traitement sur la pâte, vous avez une expérience de l'utilisateur problème, depuis les utilisateurs d'attendre une pâte à coup de pied est un bon moyen de les faire fuir votre site
OriginalL'auteur Martin Jespersen
C'est très navigateur dépendante. Les données sont dans le cas transmis à votre gestionnaire. Dans safari/chrome, nous sommes à l'écoute pour la
paste
événement sur l'entrée et ensuite de faireevent.clipboardData.getData('text/plain')
dans le rappel, et il semble fonctionner. Vous devez utiliser votre favori débogueur et mettre un point d'arrêt dans votre pâte gestionnaire d'événements, et de regarder l'événement qui est passé.
-1, je suis d'accord avec martin... Ce n'est pas très robuste méthode qui dépend du navigateur d'utilisateurs.
Droit, j'ai fait effacer les peines de un à trois...
OriginalL'auteur hvgotcodes
Vous avez besoin d'un hack. J'ai détaillé sur un Débordement de Pile à quelques reprises avant:
OriginalL'auteur Tim Down
C'est très simple, le code ci-dessous fonctionne très bien, dans mon cas, prend du texte figurant sur le presse-papiers.
Dans ce cas, la variable appelée copié contient la valeur que vous avez besoin.
paste
événement.Vous pouvez appeler la méthode à l'intérieur de votre composant <textarea onpaste="onPaste(this);"> </textarea> Ou assigner une méthode avec jquery: $('yourComponent').('coller', function () { var copié = event.vue.clipboardData.getData("Texte"); });
OriginalL'auteur Fer León
Si vous avez besoin d'une solution simple avec un minimum de script pour le lien url, le collage, la solution pourrait être à la recherche à la longueur du texte inséré dans un textarea. Le code est assez explicite. Fondamentalement, vous regardez la longueur de la zone de texte valeur et de sauver les deux derniers l'évolution des valeurs. Si la différence entre les deux valeurs est supérieure à 5 caractères, vous supposer que l'utilisateur collé le texte. Un utilisateur moyen, normalement, ne serait pas appuyer sur plus de cinq touches à la fois, supprimant ainsi le des hypothèses inutiles.
Cette solution ne fonctionne que sur les textes collés qui sont plus de 5 caractères, les Url sont généralement.
OriginalL'auteur Jure Majerič