2013-07-25 10 views
7

Ich versuche, die "Autokorrektur" -Funktionalität in Programmen wie Microsoft Office Outlook etwas zu duplizieren.Setzen Sie den Cursor auf eine bestimmte Position in einer bestimmten Zeile in einem Textfeld

Für den Anfang, zu jeder Zeit einen Benutzer „a“ (der Buchstabe a und ein Raum) am Anfang einer Zeile mag ich diesen Text ändern „* Stelle [“

Ich habe geschrieben das unter der funktioniert gut, wenn Sie im Textbereich von oben nach unten tippen. Wenn Sie jedoch irgendwo anders in den Textbereich eingeben, wird der Text geändert, und der Cursor wird an das Ende des Textfelds verschoben.

Ich möchte den Cursor immer am Ende des geänderten Textes platziert werden.

Ich habe die Zeilennummer, die in der Variablen currentLineNumber geändert wurde und ich weiß, dass der Cursor nach dem 8. Zeichen in dieser Zeile sein muss, aber ich bin nicht sicher, wie es zu sagen, dorthin zu gehen

Idealer id wie zu etwas wie

function setCursor(row, position) { 
//.... code to set cursor 
} 

Was kann ich tun, um dies zu erreichen? Ich bin offen für eine Javascript oder jQuery-Lösung (obwohl ich finde jQuery ein wenig schwierig zu lesen und zu verstehen)

Wenn es einen besseren Weg zu erreichen, was ich insgesamt brauche, bin ich auch offen dafür.

Hier ist ein jsFiddle wenn Sie das Problem nicht verstehen

+0

möglich Duplikat von [Setzen Sie die Cursorposition in HTML-Textfeld] (http://StackOverflow.com/Questions/512528/set-cursor-position-in-HTML-textbox) –

Antwort

10

ich Ihre Geige siehe aktualisiert haben: http://jsfiddle.net/eghpf/2/

I var currentPosition hinzugefügt haben, die in diesem Verfahren verwendet wird,

function setSelectionRange(input, selectionStart, selectionEnd) { 
    if (input.setSelectionRange) { 
    input.focus(); 
    input.setSelectionRange(selectionStart, selectionEnd); 
    } 
    else if (input.createTextRange) { 
    var range = input.createTextRange(); 
    range.collapse(true); 
    range.moveEnd('character', selectionEnd); 
    range.moveStart('character', selectionStart); 
    range.select(); 
    } 
} 

Was davon kommt jQuery Set Cursor Position in Text Area

Was passiert (ist der Grund, warum die Curso r ist immer auf der letzten Position); Wenn Sie $('#systemNotesbuilder').val(arrayOfLines.join("\n")); aufrufen, wird der gesamte Wert mit einem neuen Wert überschrieben, wobei der Cursor nach diesem neuen Wert platziert wird. Der Aufruf zum Setzen des Cursors ist (und sollte) nach diesem Aufruf.

+0

Vielen Dank. Das war viel weniger schmerzhaft als ich es erwartet hatte und ich kann verstehen, wie das funktioniert. perfekt! – DelightedD0D

Verwandte Themen