2011-01-05 4 views
2

Comment détecter la modification d'un champ de texte lorsque l'utilisateur insère un texte du presse-papier à l'aide de la souris (trackpad)? Les événements 'change', 'keyup', 'click' ne sont pas déclenchés dans ce cas. Comment cela se fait sur Twiiter?Événement jQuery 'change'

Répondre

3

Si aucun travail événements traditionnels, vous pourriez avoir à mettre en place une sorte de système de vote:

$('input').focus(function(){ 
    setInterval(function(){ 
     if (this.value != $.data(this, 'oldVal')) { 
      $(this).trigger('change'); 
     } 
    }, 250); 
}).change(function(){ 
    $.data(this, 'oldVal', this.value); 

    // do your onchange code here 
}); 
3

Essayez abonnée à paste événement:

- Pavel

+0

bien ... 'onpaste' est plus ou moins la même chose que' keyup', juste que 2 touches ont été pressées :). vous pouvez réduire les événements de changement à 'keyup' et 'click' –

+2

@Andreas: Essayez de coller un texte en utilisant un menu contextuel (faites un clic droit et sélectionnez" Coller "). Ni "keyup" ne "clic" tirera. – volpav

+0

@volpav: j'ai utilisé 'click' trop générique - mon erreur ...' mousedown' capture toutes sortes de clics (que ce soit à gauche, au milieu, à droite ...) –

0

i utiliserais blur pour cette

live demo

var control = $('#txt'); 
control.blur(function() { 
    var defaultValue = control.attr('defaultValue'); 
    var actualValue = control.val(); 
    if (defaultValue != actualValue) { 
     control.css('background-color', 'red'); 
    } 
}); 
+0

Le flou ne fonctionne pas jusqu'à ce que nous quittions le champ. – Azat

+0

@Azat: Et était votre condition/exigence pour cela? :) –

+0

@Azat: s'il vous plaît élaborer! –