auf enter reagieren
g.a.
- javascript
hi,
ich wollte per javascript eine konsole simulieren,
dafür habe ich ein textarea benutzt. nur es soll eine funktion nur per ENTER aufrufen, nicht zur nächsten zeile springen.
zetzt meine frage:
gibt es sowas wie onEnter="blabla()"?
oder wie könnte ich es sonst lösen?
danke für antworten.
Hallo g.a.,
hi,
ich wollte per javascript eine konsole simulieren,
dafür habe ich ein textarea benutzt. nur es soll eine funktion nur per ENTER aufrufen, nicht zur nächsten zeile springen.
zetzt meine frage:
gibt es sowas wie onEnter="blabla()"?
Indirekt ja, denn es gibt das keypress-Event.
Das fragst du wie folgt ab:
<script type="text/javascript" language="JavaScript">
<!--
function melden(e) {
var keyCode=(e)? e.which :event.keyCode;
if(keyCode==13) alert("ENTER gedrückt!");
}
document.onkeypress=melden;
//-->
</script>
Gruß Gernot
Hallo,
Indirekt ja, denn es gibt das keypress-Event.
Das fragst du wie folgt ab:
<script type="text/javascript" language="JavaScript">
<!--
function melden(e) {
var keyCode=(e)? e.which :event.keyCode;
if(keyCode==13) alert("ENTER gedrückt!");
}
document.onkeypress=melden;
//-->
</script>
Was mich eigentlich mal überraschte, dass ein onKeyDown="if(event.keyCode==13) machWas();" in Formularelementen mir "allen" (IE 5+, NS 6+, Mozilla, Opera) funktioniert.
Grüße
Thomas
Hallo Thomas,
Was mich eigentlich mal überraschte, dass ein onKeyDown="if(event.keyCode==13) machWas();" in Formularelementen mir "allen" (IE 5+, NS 6+, Mozilla, Opera) funktioniert.
Nein, das Folgende funktioniert nicht ...
<textarea onKeyDown="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
... denn der Umbruch kommt bei allen Browsern in der Textarea an.
Dies hier hingegen funktioniert in IE6 und Mozilla1.7.2 unter Win98:
<textarea onKeyPress="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
Warum der Zeilenumbruch aber in Opera7.54 auch mit dem onKeyPress-Event nicht unterdrückt wird, wüsste ich auch mal gerne.
Gruß Gernot
Hallo,
Was mich eigentlich mal überraschte, dass ein onKeyDown="if(event.keyCode==13) machWas();" in Formularelementen mir "allen" (IE 5+, NS 6+, Mozilla, Opera) funktioniert.
Nein, das Folgende funktioniert nicht ...
<textarea onKeyDown="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
... denn der Umbruch kommt bei allen Browsern in der Textarea an.
Hmmmm..., das habe ich so nicht ausprobiert, da ich immer eine Funktion dabei aufrufe ;-)
Dies hier hingegen funktioniert in IE6 und Mozilla1.7.2 unter Win98:
<textarea onKeyPress="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
Gut zu wissen.
Warum der Zeilenumbruch aber in Opera7.54 auch mit dem onKeyPress-Event nicht unterdrückt wird, wüsste ich auch mal gerne.
Sagt die JS-Konsole was dabei?
Grüße
Thomas
Hallo Thomas,
Nein, das Folgende funktioniert nicht ...
<textarea onKeyDown="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
... denn der Umbruch kommt bei allen Browsern in der Textarea an.
Hmmmm..., das habe ich so nicht ausprobiert, da ich immer eine Funktion dabei aufrufe ;-)
Wahrscheinlich liegt es daran, dass onKeyPress früher feuert als onKeyDown.
Warum der Zeilenumbruch aber in Opera7.54 auch mit dem onKeyPress-Event nicht unterdrückt wird, wüsste ich auch mal gerne.
Sagt die JS-Konsole was dabei?
Nein, die schweigt still.
Ich habe auch versucht, den eingefügten Zeilenumbruch nachträglich herauszulöschen, das geht aber auch nicht, und zwar in keinem der getesteten Browser. Das ist schon alles sehr seltsam.
<script type="text/javascript" language="JavaScript">
<!--
function filtern(e) {
var keyCode=(e)? e.which :event.keyCode;
if(keyCode==13) {
var txt = document.meinForm.meineArea.value;
txt = txt.replace(/\n/, "");
document.meinForm.meineArea.value = txt;
//alert(txt);
//return false;
}
}
//-->
</script>
Gruß Gernot
Hello,
Wahrscheinlich liegt es daran, dass onKeyPress früher feuert als onKeyDown.
Die beiden liefern auch unterschiedliche Codes. Der eine liefert das Ereignis und der andere den Zustand. Das ist so ähnlich wie mit Scancode und Interrupt der Taste und readkey und Poll durchs Programm.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Wahrscheinlich liegt es daran, dass onKeyPress früher feuert als onKeyDown.
Die beiden liefern auch unterschiedliche Codes. Der eine liefert das Ereignis und der andere den Zustand. Das ist so ähnlich wie mit Scancode und Interrupt der Taste und readkey und Poll durchs Programm.
Laber Rhabarber... Wenn eine Taste gedrückt wird, sind die Werte der keyCode-Eigenschaft der Event-Objekte der durch den Tastendruck ausgelösten Keypress- und Keydown-Events selbstverständlich identisch.
Mathias
Hello,
Laber Rhabarber... Wenn eine Taste gedrückt wird, sind die Werte der keyCode-Eigenschaft der Event-Objekte der durch den Tastendruck ausgelösten Keypress- und Keydown-Events selbstverständlich identisch.
Soso. Dann lös doch mal Kombinationstastendrücke aus *grins*
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Nein, das Folgende funktioniert nicht ...
<textarea onKeyDown="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
Wahrscheinlich liegt es daran, dass onKeyPress früher feuert als onKeyDown.
Wie kommst du darauf? Der Keydown-Event wird selbstverständlich zuerst gefeuert, dann der Keypress-Event. Dass die Auswirkungen des Tastendrucks erst beim Keypress-Event verhindert werden können, erscheint mir logisch. Erst mit dem Keypress-Event wird bzw. würde ein Zeichen in das Eingabefeld geschrieben.
Mathias
Hello,
Nein, das Folgende funktioniert nicht ...
<textarea onKeyDown="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
... denn der Umbruch kommt bei allen Browsern in der Textarea an.
Das liegt daran, dass event.keyCode==13 nur ein Vergleich mit einer "Speicherstelle" ist.
Die wird aber dadurch nicht verändert. Du kannst im IE aber 'was reinschreiben und dann ist der chr(13) plötzlich verschwunden. Sowas nennt sich dann "objektorientiert" *tztz* (da fällt mir doch glatt ein "Sicherheit im Netz" *hahah*)
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Nein, das Folgende funktioniert nicht ...
<textarea onKeyDown="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
... denn der Umbruch kommt bei allen Browsern in der Textarea an.
Das liegt daran, dass event.keyCode==13 nur ein Vergleich mit einer "Speicherstelle" ist.
Wie bitte? Was bedeutet das?
Mathias
Hallo,
<textarea onKeyPress="if(event.keyCode==13) return false;" name="meineArea" cols="20" rows="5"></textarea>
Warum der Zeilenumbruch aber in Opera7.54 auch mit dem onKeyPress-Event nicht unterdrückt wird, wüsste ich auch mal gerne.
Man kann sich darüber streiten, ob es ein Browser überhaupt zulassen soll, dass Tastatureingaben in Formularfelder schon beim Handlen der zugehörigen Events gesperrt werden können. In Opera 8 funktioniert zumindest das Abfangen von Tasten über den Keypress-Event.
Mathias