2009-05-08 15 views
2

Ich habe ein Textfeld, und wenn es sich ändert, möchte ich, dass eine Funktion aufgerufen wird.Gibt es einen besseren Austausch?

Das Onchange-Standardereignis wird jedoch ausgelöst, nachdem der Fokus den Textbereich verlassen hat. Was ich wirklich will, ist das Selbstfeuern, sobald der Benutzer anfängt zu tippen.

Ich könnte Onkeypress binden, aber das geht nicht, sagen wir, Einfügen von Text in das Textfeld mit der Maus. Außerdem wird es für Tab und andere nicht veränderliche Tasten gedrückt.

Gibt es eine bessere Lösung?

+0

ich weiß, das ist hässlich. .. aber was ist mit der Abfrage des Staates mit einem Timer ...? – elcuco

Antwort

4

könnten Sie ein

onkeyup="SomeFunction();" 

Bearbeiten hinzu: Aah, zu schnell. Ich habe das "on mousepaste" nicht gesehen.

Edit 2:

<script type="text/javascript"> 
    var ival = ""; 
    var checkup = window.setInterval("checkChange();", 100); 
    function checkChange() { 
     var nval = document.getElementById("test").value; 
     if (nval!=ival) { alert("change in the text"); ival=nval; } 
    } 
</script> 
<input type="text" id="test" name="test" value="" /> 

Beispiel aus: http://bytes.com/topic/javascript/answers/703623-capturing-event-when-user-right-click-paste-into-text-box

+1

, die nicht mittleren Klick (auf Linux einfügen), noch Rechtsklick-> einfügen. – elcuco

+0

können Sie 'onpaste' Handler hinzufügen – exebook

0

onKeyPress funktionieren wird, nur im Fall von codierten klebte - Sie wissen, es klebt, weil es ein Newline-Zeichen enthalten, wo als ob Sie wurden die Eingabe nur in ein Textfeld - die newline-Zeichen nicht

nur prüfen, ob ein newline vorhanden sein würden und verwenden onKeyPress

Verwandte Themen