2011-01-05 24 views
2

Wie erkennt man das Ändern eines Textfelds, wenn der Benutzer einen Text aus der Zwischenablage mit der Maus (Trackpad) einfügt? In diesem Fall werden die Ereignisse "Ändern", "Key-Up" und "Klicken" nicht ausgelöst. Wie geht es Twiiter?jQuery 'change' event

Antwort

3

Wenn keine traditionellen Veranstaltungen arbeiten, können Sie eine Art von Abfragesystem einzurichten haben:

$('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

Try zeichn zu paste Ereignis:

- Pavel

+0

gut ... 'onpaste' ist mehr oder weniger die gleiche wie' keyup', nur dass 2 Tasten gedrückt wurden :). Sie können Change-Events auf 'keyup' und' click' minimieren. –

+2

@Andreas: Versuchen Sie, einen Text über ein Kontextmenü einzufügen (Rechtsklick und wählen Sie "Einfügen"). Weder "keyup" noch "click" werden ausgelöst. – volpav

+0

@volpav: ich benutze 'klicken' zu allgemein - mein Fehler ...' mousedown' erfasst alle Arten von Klicks (ob es links, Mitte, rechts ...) –

0

i blur für diesen

verwenden würde,

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

Blur funktioniert nicht, bis wir das Spielfeld verlassen. – Azat

+0

@Azat: und war Ihre Bedingung/Voraussetzung dafür? :) –

+0

@Azat: bitte erarbeiten! –