2011-01-16 17 views
6

Tengo un formulario de inicio de sesión básico, que utiliza ajax para iniciar sesión en los usuarios. Si los detalles son incorrectos, se muestra texto que muestra que el inicio de sesión ha fallado. Cuando esto se muestra, el último cuadro de texto en el que el usuario ingresó texto pierde foco.jquery elemento centrado por última vez

¿Es posible establecer el foco en el último cuadro de texto en el que estaba el usuario antes de presionar enviar/presionar enter?

$('#login').click(function (e) 
{ 
    e.preventDefault(); 
    $.ajax({ 
    type: "POST", 
    dataType: "text", 
    url: "login.php", 
    data: "username=" + $("#username").val() + "&password=" + $("#password").val(), 
    cache: false, 
    success: function(reply) 
    { 
    if (reply.indexOf("Success") >= 0) 
    { 
    location.reload(); 
    } 
    else 
    { 
    $("#loginResult").html("Login Failed"); 
    //set focus here  
    } 
    } 
}); 

Cualquier sugerencia, gracias.

Respuesta

7

Subscribe todas sus entradas para el evento focusOut

$('.input').focusout(function() { 
    $('#myform').data('lastSelected', $(this)); 
}); 
+1

gusto personal:. Me gustaría adjuntar el $ (este) a la forma, al igual que en, $ ('# myForm') de datos ('lastSelected' , $ (esto)). se siente menos contaminante que las variables globales – davin

+0

@davin, si tiene múltiples formularios en la página necesitará también mantener una referencia al formulario ... –

+0

@Gaby, si tiene múltiples formularios y usa una variable global, terminará subir elementos de enfoque en la forma _wrong_! – davin

Cuestiones relacionadas