2010-02-09 4 views
1

Je souhaite accrocher l'événement de collage pour <input type="text"> et forcer ce texte à être collé dans une zone de texte masquée (puis je veux analyser le texte de textarea et exécuter l'action 'Coller les données d'Excel vers grille'). Quelque chose comme:Accrocher un événement de collage à une zone de texte masquée

$('#input1').bind('paste', function(e) { 
    // code do paste text to textarea instead of originally targeted input 
}); 

Quel code croisé de navigateur dois-je écrire au lieu de commentaires?

Merci.

Répondre

3

Il existe cette solution hacky qui déclenche un événement focus sur une zone de texte lorsque les touches Ctrl et V ou les touches Maj et Insérer sont enfoncées. [Oui, il ne fonctionne pas pour contextmenu -> passé]

$(document).ready(function(){ 
    var activeOnPaste = null; 
    $('#input1').keydown(function(e){ 
     var code = e.which || e.keyCode; 
     if((e.ctrlKey && code == 86) || (e.shiftKey && code == 45)){ 
      activeOnPaste = $(this); 
      $('#textarea').val('').focus(); 
     } 
    }); 
    $('#textarea').keyup(function(){ 
     if(activeOnPaste != null){ 
      $(activeOnPaste).focus(); 
      activeOnPaste = null; 
     } 
    }); 
}); 

Le code permet la mise au point sur un pointeur lorsque textarea touches Ctrl et V sont en baisse. À ce moment-là, aucun texte n'est collé, il est collé après que cette fonction de clavier a été déclenchée pour que le texte collé soit affiché dans la zone de texte. Après cela, sur keyup sur cette zone de texte, #input1 sera focalisé. Tout en tapant cela, je vois qu'il peut y avoir une solution pour le collage du clavier et le collage de la souris, en utilisant des plages. Je vais essayer quelque chose avec ça aussi ...

+1

Idée intéressante, merci. J'espère que vous allez poster une solution de collage de la souris aussi. – Roman

0

Vous devez lier une fonction à l'événement onChange() de votre champ d'entrée et copier son contenu à chaque fois que cette fonction est appelée et traiter les données par la suite. Si vous êtes particulièrement intéressé par le contenu "collé" (je ne sais pas ce que vous essayez de faire ici, mais généralement c'est un signe de mauvais concept d'être dans une situation où le contenu collé doit être traité en plus) vous pouvez essayer un compteur qui vérifie la vitesse d'entrée (par exemple plus de xx caractères par seconde -> PASTE-Eventcall)

Questions connexes