Wenn die Person derzeit enterin den Textbereich drückt , wird das Formular gesendet.
Gut, das will ich.
Wenn sie jedoch shift+ entereingeben, soll der Textbereich in die nächste Zeile verschoben werden:\n
Wie kann ich das in JQuery
oder einfach in JavaScript so einfach wie möglich machen?
javascript
jquery
html
css
TIMEX
quelle
quelle
e.shiftKey
.shiftKey
Eigenschaft des Ereignisses suchen .Antworten:
Einfachere Lösung besser nutzen:
Tims Lösung unten ist besser. Ich schlage vor, diese zu verwenden: https://stackoverflow.com/a/6015906/4031815
Meine Lösung
Ich denke, Sie können so etwas tun ..
BEARBEITEN: Der Code wurde so geändert, dass er unabhängig von der Caret-Position funktioniert
Der erste Teil des Codes besteht darin, die Caret-Position zu ermitteln.
Ref: Wie wird die Position der Caret-Spalte (nicht der Pixel) in einem Textbereich in Zeichen von Anfang an ermittelt?
Wenn Sie dann den Textbereichswert entsprechend ersetzen, wenn Shift+ Enterzusammen, senden Sie das Formular, wenn Sie Enteralleine drücken.
Hier ist eine Demo
quelle
event.keyCode == 13
) und ich denke, du wolltest wahrscheinlich auchevent.preventDefault()
eher alsevent.stopPropagation()
.event.stopPropagation()
ich einen anderen Code stoppen, den er möglicherweise geschrieben hat, um das Formular einzureichen.event.stopPropagation()
, dass das Ereignis weiter im DOM sprudelt, aber nicht, dass der Tastendruck seine Standardaktion zum Einfügen eines Zeilenumbruchs ausführt (obwohl dies inkeyup
meinem Vorschlagevent.preventDefault()
auch nicht der Fall ist ).carent
nicht definiert ist. Wenn ich ihn in Caret ändere, werden 2 neue ZeilenEinfache und elegante Lösung:
EnterWenn Sie in einem Textbereich drücken , wird das Formular nur gesendet, wenn Sie über ein Skript verfügen, das dies ermöglicht. Das ist das Verhalten, das der Benutzer erwartet, und ich würde empfehlen, es nicht zu ändern. Wenn Sie dies jedoch tun müssen, besteht der einfachste Ansatz darin, das Skript zu finden, mit dem Enterdas Formular gesendet wird, und es zu ändern. Der Code wird so etwas wie haben
... und Sie könnten es einfach ändern
Wenn Sie jedoch aus irgendeinem Grund keinen Zugriff auf diesen Code haben, müssen Sie die folgenden Schritte ausführen, damit er in allen gängigen Browsern funktioniert, auch wenn sich das Caret nicht am Ende des Textes befindet:
jsFiddle: http://jsfiddle.net/zd3gA/1/
Code:
quelle
Die meisten dieser Antworten erschweren dies. Warum versuchen Sie es nicht so?
Kein Herumspielen mit der Caret-Position oder dem Schieben der Schnur bricht in JS ein. Grundsätzlich wird die Funktion nicht ausgeführt, wenn die Umschalttaste gedrückt wird, sodass die Eingabe- / Eingabetaste ihre normale Funktion ausführen kann.
quelle
Warum nicht einfach
quelle
Verwenden Sie das jQuery-Hotkeys- Plugin und diesen Code
quelle
Hier ist eine AngularJS-Lösung mit ng-keyup, wenn jemand das gleiche Problem mit AngularJS hat.
quelle
Die Verwendung von ReactJS ES6 ist hier der einfachste Weg
shift+ enterNeue Linie an einer beliebigen Position
enter verstopft
quelle
Ich fand diesen Thread auf der Suche nach einer Möglichkeit, Shift + eine beliebige Taste zu steuern. Ich habe andere Lösungen zusammengefügt, um diese kombinierte Funktion zu erstellen und das zu erreichen, was ich brauchte. Ich hoffe es hilft jemand anderem.
quelle
Für den Fall, dass sich noch jemand fragt, wie dies ohne jQuery geschehen soll.
HTML
<textarea id="description"></textarea>
Javascript
Vanilla JS
quelle
Ich benutze div, indem ich contenteditable true hinzufüge, anstatt textarea zu verwenden.
Hoffnung kann dir helfen.
quelle
Das funktioniert bei mir!
quelle
ng-keyup
Wenn Sie die Direktive in angleJS verwenden, senden Sie eine Nachricht nur beim Drücken derEnter
Taste undShift+Enter
nehmen nur eine neue Zeile ein.quelle