Tenemos un área de textarea y queremos colocar el cursor al final de la línea actualmente activa donde se encuentra el cursor.
Contenido de ejemplo dentro del área de texto:
This is our first line, then comes a second line, followed by a third line which holds *|* the cursor and a fourth line. Ahora el cursor parpadeante *|* debería terminar después de la palabra cursor después de la ejecución de la función javascript.
¿Cuál sería el código javascript para hacer esto?
Algunas ideas iniciales:
Para obtener el número de línea se puede utilizar este código:
let line_number = textarea.value.substr(0, textarea.selectionStart).split("\n").length;Para repasar todas las líneas del área de texto:
let lines = textarea.value.split("\n");Obtener la longitud de la línea actual:
let end_of_line = lines[line_number-1].length;Después:
// set the cursor position to the end of the line textarea.selectionStart = end_of_line;Parece que no funciona...
¿Tenemos que contar todos los caracteres hasta la línea actual y luego agregarle la longitud de la línea, esto como la nueva posición del cursor?
Esta es la solución que se me ocurrió:
// line where cursor is now let line_number = textarea.value.substr(0, textarea.selectionStart).split("\n").length; // split all lines of the textarea let contentlines = textarea.value.split("\n"); let charcount = 0; for (var i=0; i < line_number-1; i++) { // count line break as one char charcount += contentlines[i].length + 1; } let end_of_line = contentlines[line_number-1].length; textarea.selectionStart = charcount+end_of_line; textarea.selectionEnd = charcount+end_of_line;No hay garantía de que sea 100 % correcto y funcione en todos los casos.