Tengo un <p>
que contiene texto. Cuando se hace clic en <p>
, creo un <textarea>
que contiene el texto del <p>
. ¿Es posible calcular donde en el texto <p>
se produjo el clic, y mover el cursor <textarea>
al mismo punto?¿Es posible determinar en qué parte del texto de un p se produjo un clic del mouse?
Respuesta
No lo creo, no. El DOM solo sabe qué elemento contenedor recibió el evento click, no distingue entre fragmentos de texto dentro del elemento contenedor a menos que sean elementos en sí mismos. Y dudo que quieras envolver a todos los personajes en tu texto con su propia etiqueta de elemento :)
Supongo que esto va a costar un buen montón de tiempo para acertar, y no podrás obtener es exactamente correcto. Pero es probable que desee utilizar event.clientX y event.clientY.
EDITAR - no sabía nada de esto cuando respondí. Parece bastante posible obtenerlo exactamente correcto. http://www.quirksmode.org/dom/range_intro.html
Una idea alternativa: coloque el textarea de modo que parezca texto sin formato, y vuelva a modificarlo para que parezca un campo de formulario cuando se haga clic.
ooo, me gusta esa idea alternativa. Puede que tenga que jugar con eso en algún momento del desarrollo futuro. – David
nice idea re: textarea styling. Esto es lo mejor que he pensado, pero todavía veo algunos inconvenientes, p. cuando se ingresa más de un párrafo en un '
Esperanza este ejemplo simple ayuda:
<html>
<head/>
<body>
<script type='text/javascript'>
function getPosition()
{
var currentRange=window.getSelection().getRangeAt(0);
return currentRange.endOffset;
}
function setPosition(elemId, caretPos) {
var elem = document.getElementById(elemId);
if(elem != null) {
if(elem.createTextRange) {
var range = elem.createTextRange();
range.move('character', caretPos);
range.select();
}
else {
if(elem.selectionStart) {
elem.focus();
elem.setSelectionRange(caretPos, caretPos);
}
else
elem.focus();
}
}
}
function test()
{
setPosition('testId', getPosition());
}
</script>
<p onclick = 'test()'>1234567890</p>
<textarea id='testId'>123467890</textarea>
</body>
</html>
o puede utilizar la biblioteca JS de terceros, como jQuery - ver this example.
- 1. ¿Es posible SIMULAR un clic del mouse con un mouse hacia abajo y hacia arriba?
- 2. ¿Es posible enviar aEvent() un clic del mouse a un elemento <input type = text>?
- 3. Cómo detectar si un clic() es un clic del mouse o se activa mediante algún código?
- 4. Determinar si un ensamblaje es parte del .NET framework
- 5. Simular un clic del mouse en Flash mediante JavaScript
- 6. Simular clic real del mouse
- 7. ¿Cómo se desactiva el clic derecho del mouse dentro de un cuadro de texto
- 8. ¿Cómo puedo determinar en qué monitor se produce un evento de mouse Swing?
- 9. ¿Cuál es la diferencia entre un clic y un clic del mouse?
- 10. ¿Cómo simulamos un clic del mouse con Xlib/C?
- 11. ToolStrip veces no responde a un clic del mouse
- 12. win32: simular un clic sin simular el movimiento del mouse?
- 13. ¿Cómo se puede detectar un evento de clic de mouse en un objeto Image en Java?
- 14. Determinar si el evento modificado se produjo a partir de la entrada del usuario o no
- 15. ¿Es posible hacer clic en un botón sin perder el foco en un cuadro de texto?
- 16. Textarea pierde el foco en el clic del mouse?
- 17. clics del mouse SeaDragon
- 18. Texto CSS Alinear parte inferior del contenedor
- 19. ¿Cómo puedo obtener el componente en la posición de clic del mouse, cuando uso un TableCellEditor?
- 20. Cómo determinar la longitud del texto en un UITextfield
- 21. Determine en qué mouse se hizo clic (múltiples dispositivos de mouse) en .NET
- 22. agregar un texto en la parte superior del archivo
- 23. ¿Cómo hacer que una parte del texto se pueda hacer clic como botón en Android?
- 24. ¿Cómo ejecutar un conjunto seleccionado de pruebas unitarias en Eclipse con un solo clic del mouse?
- 25. ¿Qué parte del lenguaje C# es .ForEach()?
- 26. UILabel parte visible del texto
- 27. iPhone - determinar si se produjo en contacto subvista de un UIView
- 28. ¿Es posible activar un evento de clic al pasar el mouse sobre él?
- 29. ¿Es posible determinar en qué idioma se escribió un ensamblado .NET ex post facto?
- 30. ¿Cómo se detecta un doble clic con el botón izquierdo del ratón en WPF?
Creo que tienes razón ... ¡pero espero que estés equivocado! – Armand
@ La respuesta de Yeti parece contradecir lo que dices, David. Es algo de lo que tampoco era consciente. – morgancodes
@morgancodes: ciertamente espero que la solución de Yeti funcione. Tendré que mantenerlo en caso de que alguna vez encuentre lo mismo :) – David