entrada jquery seleccione todo en el foco

Resuelto Tim asked hace 14 años • 17 respuestas

Estoy usando este código para intentar seleccionar todo el texto en el campo cuando un usuario se concentra en el campo. Lo que sucede es que selecciona todo por un segundo, luego se deselecciona y el cursor de escritura queda donde hice clic...

$("input[type=text]").focus(function() {
   $(this).select();
});

Quiero que todo permanezca seleccionado.

Tim avatar Jun 30 '10 21:06 Tim
Aceptado

Intenta usar clicken lugar de focus. Parece funcionar tanto para eventos de mouse como de teclas (al menos en Chrome/Mac):

jQuery <versión 1.7:

$("input[type='text']").click(function () {
   $(this).select();
});

jQuery versión 1.7+:

$("input[type='text']").on("click", function () {
   $(this).select();
});

Aquí hay una demostración

karim79 avatar Jun 30 '2010 14:06 karim79

Creo que lo que pasa es esto:

focus()
   UI tasks related to pre-focus
   callbacks
       select()
   UI tasks related to focus (which unselect again)

Una solución alternativa puede ser llamar a select() de forma asincrónica, para que se ejecute completamente después de focus():

$("input[type=text]").focus(function() { 
    var save_this = $(this);
    window.setTimeout (function(){ 
       save_this.select(); 
    },100);
});
Piskvor left the building avatar Jun 30 '2010 14:06 Piskvor left the building

Creo que esta es una mejor solución. A diferencia de simplemente seleccionar en el evento onclick, no impide seleccionar/editar texto con el mouse. Funciona con los principales motores de renderizado, incluido IE8.

$('input').on('focus', function (e) {
    $(this)
        .one('mouseup', function () {
            $(this).select();
            return false;
        })
        .select();
});

http://jsfiddle.net/25Mab/9/

user2072367 avatar Aug 30 '2013 13:08 user2072367