JS mit Entertaste Absenden anstatt Button
portseven
- javascript
hallo,
habe hier eine Funktion wo ich per Entertaste den Beitrag absenden kann. Problem ist er funktioniert nicht bei einer Textarea. Woran liegt es? Wenn ich anstatt Textarea Input type="text" nehme funktioniert es. Brauche es aber für Textarea
JS
<script LANGUAGE="javascript"> function send() { document.theform.submit() } </script>
HTML:
<form action="" method="POST" id="theform" name="theform">
<textarea name="send_msg" onunfocus="send()" placeholder="Schreibe etwas..."></textarea>
</div>
Hallo portseven,
<script LANGUAGE="javascript"> function send() { document.theform.submit() } </script>
Das language-Attribut ist nicht sinnvoll (und war es wahrscheinlich noch nie).
<form action="" method="POST" id="theform" name="theform"> <textarea name="send_msg" onunfocus="send()" placeholder="Schreibe etwas..."></textarea> </div>
Dein HTML ist kaputt.
habe hier eine Funktion wo ich per Entertaste den Beitrag absenden kann.
onunfocus ist nicht gleichbedeutend mit dem Drücken der Entertaste. Verwende besser keine on
-Attribute.
Bei einem einzeiligen Texteingabefeld kann man keine Zeilenumbrüche einfügen.
Bis demnächst
Matthias
@@portseven
Wenn ich anstatt Textarea Input type="text" nehme funktioniert es.
Nein, das kann gar nicht funktionieren.
<textarea name="send_msg" onunfocus="send()" placeholder="Schreibe etwas..."></textarea>
Es gibt kein unfocus
-Event. send()
wird nie aufgerufen.
Du kannst mit JavaScript die Interaktionen auf einer Seite verbessern (progressive enhancement). Du solltest aber nicht JavaScript für das Funktionieren einer Seite voraussetzen. (Übrigens auch bei single page applications nicht.)
Das Eingabefeld hat keine Beschriftung (label
). Muss es aber haben; Placeholder sind kein Ersatz für Labels! – Wirklich nicht!
LLAP 🖖
Hallo portseven,
um der Antwort "Wieso kaputt, funktioniert doch?!" mal vorwegzukommen:
document.forms.theform
. window.theform
funktioniert auch, aber nur, weil die Microsofties uns das in den Browser-Kriegen eingebrockt habe, uns den globalen Namespace damit vermüllen und die anderen Browserhersteller der lieben Kompatibilität wegen mitgezogen sind. Es ist leider zu verbreitet, als dass die Hersteller das entfernen könnten, und mittlerweile sogar in der HTML5 Spec angekommen (ächz!), aber MACHEN muss man es nicht. Und document.theform
funktioniert definitiv gar nicht.unfocus
Event. Es heißt blur
. Die send()-Funktion wird also nie aktiv, was nichts schadet, weil sie ja sowieso nicht funktionieren würde.Und warum funktioniert es scheinbar? Weil ein Form mit der ENTER Taste vom Browser automatisch abgeschickt wird. Nur nicht in der Textarea. Weil ENTER da einen Zeilenumbruch auslöst. Und das sollte auch so bleiben, es gibt nichts übleres als vertraute Eingabeelemente, die sich unvertraut verhalten.
Wenn Du einen Hotkey zum Abschicken des Forms haben willst, dann solltest Du dafür eine Tastenkombination wählen, die der ENTER-Taste ähnlich ist. Z.B. Strg+Enter.
Um das zu bauen:
Die dazu nötigen Informationen findest Du in unserem Wiki. Viel Erfolg!
Rolf