2011-02-24 17 views
6

Estoy usando jquery para mantener el foco en un cuadro de texto en desenfoque si la validación falla. Pero funciona en IE pero no funciona FF. ¿Alguna sugerencia?jquery focus no funciona en desenfoque

$("#inputBoxId").blur(function() { 
    if ($(this).val() < 10) 
     $("#inputBoxId").focus(); 

}); 
+0

chicos, "ve problema con el .focus() No es el foco después de conseguir el cumplimiento de la condición also..no problema en la condición !! – Manu

Respuesta

13

Parece que es necesario utilizar setTimeout de acuerdo con esta question. Dado que le está dando atención a un elemento de inmediato, necesita contar algo de tiempo para que el elemento se desenfoque primero.

$("#inputBoxId").blur(function() { 
    if ($(this).val() < 10) { 
     setTimeout(function() { 
      $("#inputBoxId").focus(); 
     }, 100); 
    } 
}); 

Ejemplo de ello trabajando en jsfiddle, probado a cabo en el canal de cromo dev, Firefox y IE8.

+0

Parece solo un problema de FF. También 0 funcionaría en lugar de 100 también – krishna

+0

Gracias, esto definitivamente ha ahorrado tiempo – Arjun

1

val() devolverá la cadena, no el número. Intente convertir y debería funcionar:

var value = parseInt($(this).val(), 10); 
if (isNaN(value) || value < 10) 
     $("#inputBoxId").focus(); 

Esto también se ocupará de los valores no numéricos.

+0

no lo hago Creo que esto hará una diferencia ya que la coerción de tipo ocurre de todos modos cuando una cadena se compara con un número. Aunque '" "<10 === verdadero', entonces tal vez haga una diferencia;) –

+0

@ Box9 quizás versiones anteriores de FF 't hacer la conversión de tipo por sí mismos ...? –

+0

el problema no era con el tipo ... estaba con el evento de enfoque ... ahora se resolvió :) – Manu

0

$(this).val().length también dará la longitud

$("#inputBoxId").blur(function() { 
    if($(this).val().length < 10){ 
      $(this).focus(); 
    } 
}); 
0

// Página visibilidad:.

document.addEventListener('visibilitychange', function() { 

     if (document.hidden) { 
      // stop running expensive task 

     } else { 
      // page has focus, begin running task 

     } 
    }); 
Cuestiones relacionadas