¿Hay alguna manera de que un área de texto active un evento si el usuario cambia la línea en la que está el cursor, por ejemplo, haciendo clic o utilizando las flechas arriba/abajo? ¿O esto simplemente no es posible en Javascript? He encontrado formas de encontrar/establecer la posición actual del cursor, pero eso no es lo que necesito ...Evento de disparo cuando el cursor se mueve entre líneas en el área de texto
Respuesta
Parece que necesita registrar un par de eventos para su área de texto. fuera de mi cabeza, un evento de clic y un evento de pulsación de tecla con múltiples valores de código de tecla. ¿Necesita usar Javascript puro o tiene algunas bibliotecas de JavaScript para utilizar?
¿Necesita ayuda con el registro de eventos? o ¿necesita ayuda para encontrar la posición de intercalación durante uno de los eventos? (ver el enlace de andy para eso) o es la respuesta a mis dos preguntas "sí"?
edición
bien, desde que estamos comentarios que estás bien con jQuery y el plugin fieldselection le impide volver a inventar la rueda.
- identificar las teclas del teclado, clics del mouse,? Copiar pegar? eventos que podrían mover el cursor en un campo de texto. Navigate and select portions of text, wikipedia
- Durante el evento, use el plugin fieldselection para obtener la nueva posición de intercalación.
- utilizar la posición del símbolo actual & & tamaño de la fuente & & cuadro de texto tamaño físico & & recuento de salto de línea para determinar si ha cambiado a una nueva línea.
- si cambió de línea, activa un evento jQuery personalizado para hacer el trabajo que desea.
// jQuery 1,7
$(document).ready(function(){
var currentLine = -1;
$("#textAreaID").on("keypress", function(evt){
if(evt.which === 40 || ...){
//down arrow key, enter key, page down key, all will move the caret to a newline
$(this).trigger("newline");
}else{
//a ton of text in a fixed width textarea will move the cursor to a newline
$(this).trigger("checkForNewline");
}
}).on("click checkForNewline", function(evt){
var jqElem = $(this);
//fieldSelection plugin call
var range = jqElem.getSelection();
if(range["row"] && range["row"] !== currentLine){
currentLine = range["row"];
jqElem.trigger("newline");
}else{
var handTypedNewlines = jqElem.val().split(/\r\n|\r|\n/);
var userTypedRowcounts = Math.floor(wholeString.length/jqElem.cols) + (handTypedNewlines instanceof 'object')?handTypedNewlines.length:0;
if(userTypedRowcounts != currentLine){
currentLine = userTypedRowcounts;
jqElem.trigger("newline");
}
}
}).on("newline", function(evt){
// do your work, caret is on a newline.
});
});
referencia desbordamiento de pila.
http://stackoverflow.com/q/1937120/176818 y aquí hay un ejemplo del complemento jQuery fieldselection http://laboratorium.0xab.cd/jquery/fieldselection/0.2.3-test/test.html – DefyGravity
Ver mis comentarios arriba ...Entonces, parece que debería ser factible, y la forma de hacerlo es realizar un seguimiento de los clics y las pulsaciones de teclas y luego comparar la línea anterior y la actual y ver si ha habido algún cambio. Debería ser capaz de resolverlo, una vez que veo la estrategia. – NumerousHats
Y sí, no tengo objeciones a las bibliotecas. Casi con toda seguridad usaré jQuery para otros aspectos del proyecto (si elijo hacerlo como una aplicación web ...) – NumerousHats
- 1. Evento de disparo cuando el texto está deseleccionado/resaltado
- 2. Vim/MacVim: cuando me desplazo con el mouse, ¡el cursor de texto también se mueve!
- 3. Detectando cuando el mouse no se mueve
- 4. Limitando el número de líneas en el área de texto
- 5. Java: cómo el cursor se mueve automáticamente de un campo de texto a otro
- 6. botón se mueve al añadir múltiples líneas de texto
- 7. El cursor se mueve al comienzo de un campo de texto
- 8. seleccionada evento de disparo de texto en Javascript
- 9. evento de disparo en el atributo DOM cambio
- 10. actualizar el valor del área de texto, pero mantener la posición del cursor
- 11. La posición del cursor cambió el evento
- 12. Insertar texto en el cursor en un área de texto, con Javascript
- 13. MouseLeave El evento se dispara cuando se mueve sobre ScrollBar del control
- 14. cursor no cambia a puntero en el caso usemap/área
- 15. Android: alineación vertical para varias líneas EditText (área de texto)
- 16. Mantener el cursor en TextArea cuando no se puede editar
- 17. evento de disparo cuando jQuery clic fuera del elemento
- 18. Ctrl + Enter jQuery en el área de texto
- 19. Eventos de mouse Java ignorados cuando el mouse se mueve?
- 20. ¿Cuándo el navegador ejecuta Javascript? ¿Cómo se mueve el cursor de ejecución?
- 21. Averigüe el número de 'línea' (fila) del cursor en un área de texto
- 22. Eliminar espacio entre líneas de texto
- 23. Obtener número de línea en el área de texto
- 24. Prevenir el parpadeo del cursor en el cuadro de texto
- 25. git sincronización del repositorio entre computadoras, cuando se mueve?
- 26. Reemplazar el texto seleccionado en el área de texto
- 27. Enviar datos desde el área de texto presionando "Enter"
- 28. MATLAB, rellenando el área entre dos conjuntos de datos, líneas en una figura
- 29. Webkit y Safari disparan el mousemove incluso cuando el mouse no se mueve
- 30. en el área de texto con jQuery
posible duplicado de [Encontrar el valor de la línea actual de un usando javascript
@AndyE Hay una diferencia bastante importante entre \ n y una línea que el usuario ve en un área de texto. Por ejemplo, este comentario no tiene una sola línea nueva, pero ya estoy en la tercera línea del área de texto :) – Esailija
@Esailija: el OP no era lo suficientemente específico como para decirlo, pero vale la pena marcarlo en caso de que sea qué es lo que está buscando. Es por eso que el comentario dice * "posible duplicado ..." *. –