Foros del Web » Programando para Internet » Javascript »

Funcion para varios campos usando focus()

Estas en el tema de Funcion para varios campos usando focus() en el foro de Javascript en Foros del Web. Hola, tengo una funcion que valida el formato de la hora en varios campos de mi formulario, esto sucede en el evento onblur() de cada ...
  #1 (permalink)  
Antiguo 30/07/2008, 16:09
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Funcion para varios campos usando focus()

Hola, tengo una funcion que valida el formato de la hora en varios campos de mi formulario, esto sucede en el evento onblur() de cada campo. Si la hora no es correcta deseo que el cursor se posicione sobre el campo que introdujo la hora incorrecta para que el usuario la corrija. Aqui esta el codigo. Se que tengo usar focus pero no se como decirle que lo haga sobre el campo que acabo de validar.

function CheckTime(str)
{
var hora = str.value;

if (hora.length!=5) {
alert("Introducir HH:MM");
return
}
a=hora.charAt(0) //<=2
b=hora.charAt(1) //<4
c=hora.charAt(2) //:
d=hora.charAt(3) //<=5
if ((a==2 && b>3) || (a>2)) {
alert("El valor que introdujo en la Hora no corresponde, introduzca un digito entre 00 y 23");
return;
}
if (d>5) {
alert("El valor que introdujo en los minutos no corresponde, introduzca un digito entre 00 y 59");
return;
}

if (c!=':') {
alert("Introduzca el caracter ':' para separar la hora y los minutos");
return;
}
}

los campos estan asi:

<input name="hora1" type="text" id="hora1" size="5" maxlength="5" onblur="CheckTime(this);" />
<input name="hora2" type="text" id="hora2" size="5" maxlength="5" onblur="CheckTime(this);" />
<input name="hora3" type="text" id="hora3" size="5" maxlength="5" onblur="CheckTime(this);" />
<input name="hora4" type="text" id="hora4" size="5" maxlength="5" onblur="CheckTime(this);" />

espero puedan ayudarme... saludos.
  #2 (permalink)  
Antiguo 31/07/2008, 06:09
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Funcion para varios campos usando focus()

Hola

Ve si te sirve esto

Código PHP:
function CheckTime(h) {
var 
okhora h.value;

var 
hora_array okhora.split(':');


    if (
hora_array.length || hora_array.length 2) {
    
alert("Necesita dos partes separadas por (:) dos puntos");
    
document.getElementById("hora").focus();
       return (
false);
    }

if (
hora_array[0] > 23 || hora_array[0].length 2) {    
alert("El valor que introdujo (" +hora_array[0] + ") en la Hora no corresponde, introduzca un digito entre 00 y 23");
    
document.getElementById("hora").focus();
       return (
false);
    }

if (
hora_array[1] > 59 || hora_array[1].length 2) {    
alert("El valor que introdujo (" +hora_array[1] + ") en la Hora no corresponde, introduzca un digito entre 00 y 59");
    
document.getElementById("hora").focus();
       return (
false);
    }



Código:
 <form>
<input type="text" name="hora" id="hora" size="5" maxlength="5" OnBlur="return CheckTime(this);" />
</form>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 31/07/2008, 10:49
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Funcion para varios campos usando focus()

Gracias Adler, pero la funcion siempre me pondra el focus en campo 'hora'. Yo necesito que ponga el focus al campo que usuario lleno. Es una funcion para varios campos de hora.

gracias.
  #4 (permalink)  
Antiguo 31/07/2008, 11:07
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: Funcion para varios campos usando focus()

Bienvenido, osanjur.

Hay una forma de hacer la validación como la que dices, pero yo no te recomiendo hacerlo así ya que es bastante incómodo para el usuario que se valide inmediatamente después de salir del campo.

Lo mejor sería validar antes de enviar el formulario, ahí ya es más fácil enviar el foco al campo incorrecto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 31/07/2008, 11:17
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Funcion para varios campos usando focus()

Gracias David, se que lo correcto es hacerlo al enviar el fomulario de hecho asi lo tengo para los demas campos. Pero en este caso mi formulario tiene 45 campos de hora y para cada uno tengo que validarlo... imaginate hacer la funcion 45 veces (una para cada campo) solo para que el foco se ponga donde es... jajajaa que locura...

gracias. saludos.
  #6 (permalink)  
Antiguo 31/07/2008, 11:19
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: Funcion para varios campos usando focus()

Aún así puedes validarlo al enviar el formulario. No necesitas usar una función para cada campo. Puedes recorrer todos los campos input usando getElementsByTagName y validarlos...
__________________
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 14:03.