Diese Frage wurde in verschiedenen Formaten gestellt, aber ich kann keine der Antworten erhalten, die in meinem Szenario funktionieren.
Ich verwende jQuery, um den Befehlsverlauf zu implementieren, wenn der Benutzer die Aufwärts- / Abwärtspfeile drückt. Wenn der Aufwärtspfeil gedrückt wird, ersetze ich den Eingabewert durch den vorherigen Befehl und setze den Fokus auf das Eingabefeld, möchte aber, dass der Cursor immer am Ende der Eingabezeichenfolge positioniert wird.
Mein Code, wie er ist:
$(document).keydown(function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
var input = self.shell.find('input.current:last');
switch(key) {
case 38: // up
lastQuery = self.queries[self.historyCounter-1];
self.historyCounter--;
input.val(lastQuery).focus();
// and it continues on from there
Wie kann ich erzwingen, dass der Cursor nach dem Fokussieren am Ende der Eingabe platziert wird?
javascript
jquery
focus
cursor
Jerodsanto
quelle
quelle
var temp = input.focus().val(); input.val('').val(temp);
input.focus().val(input.val());
contenteditable
.html()
.val()
Es sieht ein bisschen seltsam aus, sogar albern, aber das funktioniert bei mir:
Ich bin mir nicht sicher, ob ich Ihr Setup repliziert habe. Ich nehme an,
input
ist ein<input>
Element handelt.Durch Zurücksetzen des Wertes (auf sich selbst) wird der Cursor meiner Meinung nach am Ende der Eingabe gesetzt. Getestet in Firefox 3 und MSIE7.
quelle
Hoffe das hilft dir:
quelle
Chris Coyier hat dafür ein Mini-jQuery-Plugin, das perfekt funktioniert: http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
Es verwendet setSelectionRange, wenn es unterstützt wird, andernfalls gibt es einen soliden Fallback.
Dann können Sie einfach tun:
quelle
Was ist mit einer einzigen Zeile ...
Diese Linie funktioniert bei mir.
quelle
Antwort von 2 artlung : Es funktioniert nur mit der zweiten Zeile in meinem Code (IE7, IE8; Jquery v1.6):
Hinzufügung: Wenn das Eingabeelement mithilfe von JQuery zum DOM hinzugefügt wurde, wird im IE kein Fokus festgelegt. Ich habe einen kleinen Trick benutzt:
quelle
Ref: @ will824 Kommentar, Diese Lösung hat bei mir ohne Kompatibilitätsprobleme funktioniert. Die restlichen Lösungen sind in IE9 fehlgeschlagen.
Getestet und gefunden in:
quelle
Ich weiß, dass diese Antwort zu spät kommt, aber ich kann sehen, dass die Leute keine Antwort gefunden haben. Um zu verhindern, dass die Aufwärts-Taste den Cursor an den Start setzt, nur
return false
von der Methode, die das Ereignis behandelt. Dies stoppt die Ereigniskette, die zur Cursorbewegung führt. Einfügen von überarbeitetem Code aus dem OP unten:quelle
var key = e.charCode || e.keyCode || 0;
Ich benutze den folgenden Code und es funktioniert gut
quelle
Es wird für verschiedene Browser unterschiedlich sein:
Dies funktioniert in ff:
Weitere Details finden Sie in diesen Artikeln hier bei SitePoint , AspAlliance .
quelle
Wie andere sagten, klar und voll für mich gearbeitet:
quelle
Stellen Sie zuerst den Wert ein. Stellen Sie dann den Fokus ein. Wenn es fokussiert, wird der Wert verwendet, der zum Zeitpunkt des Fokus vorhanden ist. Daher muss Ihr Wert zuerst festgelegt werden.
Diese Logik funktioniert für mich mit einer Anwendung, die eine
<input>
mit dem Wert eines angeklickten füllt<button>
.val()
wird zuerst eingestellt. dannfocus()
quelle
$('input[name=item1]').val(value).focus();
Ich habe das Gleiche gefunden, wie es oben von einigen Leuten vorgeschlagen wurde. Wenn Sie
focus()
zuerst denval()
in die Eingabe drücken , wird der Cursor in Firefox, Chrome und IE am Ende des Eingabewerts positioniert. Wenn Sie den zuerstval()
in das Eingabefeld drücken , positionieren Firefox und Chrome den Cursor am Ende, aber der IE positioniert ihn nach vorne, wenn Siefocus()
.sollte den Trick machen (es hat sowieso immer für mich).
quelle
Zuerst müssen Sie den Fokus auf das ausgewählte Textfeldobjekt legen und als nächstes den Wert festlegen.
quelle
funktioniert für alle dh Browser.
quelle
Hier ist ein anderer, ein Einzeiler, der den Wert nicht neu zuweist:
quelle
quelle
Die Antwort von scorpion9 funktioniert. Um es klarer zu machen, siehe meinen Code unten,
quelle
Es wird mit der Maus fokussiert
$ ("# TextBox"). Focus ();
quelle