2012-08-28 39 views
7

que tienen un área de texto en el que estoy insertar contenido en la ubicación del cursor (gracias a Tim Down's answer). Inserta el contenido cuando el usuario presiona un botón. Pero parece que cuando se presiona el botón, el enfoque en el área de texto se pierde. ¿Cómo mantengo el enfoque allí, siempre que la ubicación del cursor también sea la misma? Estaba pensando en el uso de evt.preventDefault() con .focusout(). Si eso ayuda¿Cómo hacer que el elemento no pierda el foco cuando se presiona el botón?

Respuesta

8

No se puede evitar que el foco se mueva a un elemento enfocable y aún así permitir que el clic del mouse tenga su comportamiento normal (como click el botón). Si hace clic en un elemento que admite el enfoque, como un botón, obtendrá el foco del teclado.

Es posible poner foco de nuevo mediante programación en un elemento si se hace correctamente. Si se hace mal, puede arruinar la usabilidad de una página.

Demostración: http://jsfiddle.net/jfriend00/Ddffh/

+0

¿Me puede decir cómo? Lo siento, no lo sé. – think123

+0

@ think123 - Agregué una demostración de trabajo al final de mi respuesta. – jfriend00

+0

Buena respuesta. De todos modos, descubrí que 'unselectable =" on "' también parece funcionar, al menos para los botones. – think123

-1

Usted puede hacer esto mediante la aplicación del enfoque posterior al área de texto mediante programación como la función de clic de botón ha terminado. De esta forma, puede recuperar el enfoque junto con el evento click cada vez.

1

Asegúrese de que controla el evento MouseDown. Esto se disparará antes de que se pierda el foco de otro elemento.

En el controlador de eventos mousedown, tiene que devolver falsa, para evitar la propagación de eventos y el comportamiento por defecto. (También funcionará para eventos de toque)

return false; // on your mousedown event

http://jsfiddle.net/Ddffh/143/

Cuestiones relacionadas