Pregunta

Todo lo que necesito es poder detectar cuando el texto se cae en un área de texto. Luego tomo ese texto y hago cosas con él y borro el área de texto. Puede haber muchas de estas áreas de texto y expectativas de IU muy altas, por lo que las encuestas son el último recurso.

Para IE, " onfocus " hace el truco, ya que este evento se dispara después de que el usuario suelta cosas en el área de texto.

Para Firefox, no puedo encontrar un evento que funcione. He intentado onmouseup y onchange ... no sé qué más probar desde allí. Odiaría tener que sondear el área de texto por contenido. Ayuda muy apreciada. Gracias.

Editar: para aclarar, " descartado " significa que el usuario selecciona el texto (generalmente) de la página, pero no importa dónde, lo arrastra y lo deja en el área de texto. Esto no es lo mismo que Ctrl + V, o pegar con el botón derecho (que toma dos métodos diferentes de detección, por cierto), o (obviamente) escribir en el área de texto. Específicamente, es la "caída". aspecto de arrastrar y soltar. Realmente no sé cómo decirlo.

Siento que esta pregunta se planteó con bastante precisión. Para complacerme, asuma que me refería a cualquiera de las otras operaciones en un área de texto que todos han elegido compartir. Si me refiero a "pegar", ¿no crees que habría mencionado algo sobre pegar en el título o el contenido de mi pregunta? Lo mismo ocurre con escribir en un área de texto. Pero, tal vez, todos ustedes simplemente no me conocen lo suficiente como para saber que escribo lo que quiero decir, en lugar de escribir por error cosas que solo están algo relacionadas con lo que quiero decir.

¿Fue útil?

Solución 2

Las encuestas parecen ser el único camino a seguir.

Cuando se inicia una operación de Arrastrar + Soltar dentro del navegador, parece cancelar todo lo demás que está sucediendo. Puede presenciar esto poniendo " onmouseover " eventos en algo en la página, luego comienza una operación DnD y la arrastra sobre ella. Los eventos no se dispararán.

Parece solo una coincidencia de cómo el navegador maneja internamente "arrastrar y soltar" que hace que se active onfocus () para el área de texto en IE y Safari. Dudo que haya mucha definición en la especificación W3 ... no es que importe, W3 es una mierda, y además nadie se adhiere completamente a ella.

En mi pregunta, expresé el lujo de vaciar el área de texto después de cada uso, por lo que creo que sondear: textarea.value.length > 0 no tiene ningún costo y no debería ser un problema de rendimiento.

Pero, por desgracia, tiene que ver específicamente con soltar contenido en un área de texto.

Abajo-mod de distancia para calmar su dolor.

Otros consejos

Para Firefox, esto funciona para mí:

window.addEventHandler("dragdrop", function(event) {alert("Drop it like it's hot!")}, true)

Sin embargo, no funciona en Safari. No he probado IE.

Si desea que su área de texto reaccione al texto que se cae, pega o escribe, su única solución sería un botón. Incluso un temporizador que sondea el contenido no te ayudará.

Menciona que desea que el usuario pueda escribir texto en el área de texto. Y mencionas que quieres borrar el texto cada vez que se dispara el evento. No hay forma posible para que el navegador sepa que el usuario ha terminado de escribir. Debe confiar en una acción específica.

Ahora, para soltar o pegar, puede confiar en los eventos de mouseup y keyup para detectar eso.

¿Qué quiere decir con "caído"? ¿Estás hablando de una operación de pegar (^ V)? Si es así, la respuesta de Aron es correcta, obtendrá keydown / keyup (y el valor será legible en keyup).

Una devolución de llamada genérica que ocurrirá en cualquier actualización de una entrada es 'onchange'; podría intentarlo. Tenga en cuenta que al escribir, no se llama hasta que termine y desenfoque la entrada, por lo que si necesita actualizaciones instantáneas tanto en la escritura como en otras formas de entrada, también necesita 'onkeyup'.

Editar re aclaración: IMO 'onchange' debe activarse cuando un arrastrar y soltar hace que se agregue contenido a un área de texto; Considero que es un error del navegador que no lo es (al menos en Firefox). Solo puedo estar de acuerdo en este caso en que las encuestas son todo lo que te queda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top