2011-01-12 2 views
1

Ein Widget, das ich verwende, ändert ein HTML-Textarea-Element. Ich muss wissen, wann dieses Element geändert wurde und vorzugsweise möchte ich dieses Element auch ausblenden. Ich benutze jQuery, also versuchte ich natürlich das $ ('# textarea_id'). Change() Ereignis. Aber es wird nie ausgelöst, weil ich glaube, dass der Textbereich niemals den Fokus verliert.So erkennen Sie, wenn ein HTML-Textfeld durch Javascript geändert wurde

Was ist der beste Weg, um diesen Textbereich zu überwachen, vorzugsweise versteckt (css hat display: none)? Bitte sagen Sie mir nicht setInterval ...

+0

Es kann einige non-cross-Browser-Lösungen geben – goat

+0

Nicht wirklich eine Antwort, aber ich würde vorschlagen, zu sehen, wenn das Widget sein eigenes 'Change'-Ereignis hat. –

+0

Was ist los mit 'setInterval'? Es ist die offensichtliche Lösung hier. – lonesomeday

Antwort

1

Sie könnten dies mit einer globalen Variablen verwalten.

var text = ""; 

$('#textarea_id').bind("keyup paste", function(e){ 
    if ($(this).val() != text) 
    { 
     // text changed 
     text = $(this).val(); 
    }  
}); 

Arbeitsbeispiel: http://jsfiddle.net/n8keN/

+1

sehen, ob Der Wert ist anders ist nicht das Problem, es überwacht, wenn der Wert geändert hat und "keyup einfügen" funktioniert nicht, wenn anderer JavaScript-Code das Textfeld ändert. –

0

würde ich .keyup() verwenden. Wenn Sie nicht möchten, dass das Ereignis jeden Tastendruck auslöst, müssen Sie bei jedem Tastendruck einen halben Sekunden-Timer neu starten und den Timer veranlassen, die Dinge auszulösen, die passieren sollen, wenn der Benutzer mit dem Tippen aufhört. Sie können mit der Zeit spielen, um es nach Ihren Wünschen zu bekommen.

+1

"keyup" funktioniert nicht, wenn anderer JavaScript-Code das Textfeld ändert. –

Verwandte Themen