Foros del Web » Programando para Internet » Javascript »

Volver Focus luego de validar no resulta

Estas en el tema de Volver Focus luego de validar no resulta en el foro de Javascript en Foros del Web. Estoy usando la siguiente validaciòn que funciona bien, el problema es que cuando falla la validaciòn el cursos pasa de igual manera al siguiente campo, ...
  #1 (permalink)  
Antiguo 26/08/2008, 23:11
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Volver Focus luego de validar no resulta

Estoy usando la siguiente validaciòn que funciona bien, el problema es que cuando falla la validaciòn el cursos pasa de igual manera al siguiente campo, quiero hacer que si falla se mantenga en dicho campo hasta que se ingrese el valor correcto.

Alguna Sugerencia?

Código:
<script language="javascript" type="text/javascript">
function Valida_Rut( Objeto ){
var tmpstr = "";
var intlargo = Objeto.value
 if (intlargo.length > 0){ 	
    
    	crut = Objeto.value 
    	largo = crut.length;
    
    if ( largo < 2 )
    {
        alert('rut inválido')
        Objeto.focus()
        return false;
    }
    for ( i=0; i < crut.length ; i++ )
                if ( crut.charAt(i) != ' ' && crut.charAt(i) != '.' && crut.charAt(i) != '-' )
                {
                tmpstr = tmpstr + crut.charAt(i);
                }
            rut = tmpstr;
    crut=tmpstr;
    largo = crut.length;

    if ( largo > 2 )
        rut = crut.substring(0, largo - 1);
    else
        rut = crut.charAt(0);

    dv = crut.charAt(largo-1);

    if ( rut == null || dv == null )
            return 0;

    var dvr = '0';
    suma = 0;
    mul  = 2;

    for (i= rut.length-1 ; i >= 0; i--)
    {
        suma = suma + rut.charAt(i) * mul;
        if (mul == 7)
            mul = 2;
        else
            mul++;
    }


    res = suma % 11;
    if (res==1)
        dvr = 'k';
    else if (res==0)
        dvr = '0';
    else
    {
        dvi = 11-res;
        dvr = dvi + "";
    }


    if ( dvr != dv.toLowerCase() )
    {
	alert('El Rut Ingreso es Invalido')
	Objeto.focus()
    return false;
    }
	alert('El Rut Ingresado es Correcto!')
	Objeto.focus()
    return true;
  }   
}
</script>
  #2 (permalink)  
Antiguo 27/08/2008, 10:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Volver Focus luego de validar no resulta

Supongo que estás haciendo la validación en el onblur, si así es en Firefox nunca me funcionó volver el foco al control validado . Eso podría solucionarlo en vez de usar el evento onblur usar el onkeydown para detectar la tecla TAB y hacer la validación, pero no valdría si el usuario pasa el foco haciendo click en otro input.

Lo que yo recomiendo es que la validación la hagas en el evento onsubmit del formulario y vuelves el foco a un campo que esté incorrecto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 28/08/2008, 10:31
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Volver Focus luego de validar no resulta

Correcto no me quedo otra alternativa que hacer en el submit, aunque para mi no era eso lo optimo, queria que avisara de inmediato.
  #4 (permalink)  
Antiguo 28/08/2008, 10:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Volver Focus luego de validar no resulta

Sí puedes avisar de inmediato con alert, pero volver el foco no sé si se pueda al menos en Firefox.

Otra idea sería en caso de que el dato introducido no sea correcto cambiar el color del input o mostrar un texto debajo de este indicando que el valor es incorrecto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:27.