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
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
});
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');
}
});
Blur funktioniert nicht, bis wir das Spielfeld verlassen. – Azat
@Azat: und war Ihre Bedingung/Voraussetzung dafür? :) –
@Azat: bitte erarbeiten! –
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. –
@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
@volpav: ich benutze 'klicken' zu allgemein - mein Fehler ...' mousedown' erfasst alle Arten von Klicks (ob es links, Mitte, rechts ...) –