entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

PHP controlar formato de hora en formulario

Hola gente!
Necesito ayuda con el siguiente problema:
Tengo un formulario para reserva de una sala de proyecciones.
Los campos son:
Fecha, desde, hasta, elemento, responsable
(Imagen que no carga removida)

Necesito controlar que la hora respete el formato HH:MM de 4 dígitos.

Desde ya muchas gracias.

0voto

Peter comentado

Si alguna de las respuestas es la solución, por favor márcala como correcta :)

2 Respuestas

2votos

Leonardo-Tadei Puntos227320

Hola Top21k,

además de lo que correctemente te sugiere Gustavo, se puede resolver esto a nivel de la interfaz de dos maneras:
1) creando unos <select> con las horas y los minutos válidos: de esta forma el usuario elige valores precargados.
2) usando algún widget para la hora hecho en JavaScript como este: http://proinf.net/permalink/introducir_una_hora_mediante_un_widget_javascript que aparece entre varios resultados del buscador.

PD: no te sugiero usar el elemento time de HTML5 porque no está todavía con buen soporte.

0voto

top21tk comentado

Tienes razón.
Ya había pensado en eso, pero para colocar en un paso hora de inicio y de fin.

Ej.

<select>
<option value=12:00-13:00>De 12 a 13
<option value=13:00-14:00>De 13 a 14
</select>

Insisto con la pregunta (se que es muy básica, pero no he trabajado mucho php+javascript)
Cómo llamo a la función js.?

0voto

Leonardo-Tadei comentado

Hola Top21K:
yo pensaba más bien que usaras 4 SELECT conteniendo hora de inicio, minutos de inicio, hora de finalización, minutos de finalización, así el tiempo de uso no está predeterminado por vos.

Para llamar a la función que te pasó Gustavo, podrías hacer:

<form action="..." id="reserva" onsubmit="return validar()">
...
....
...
<input type ="submit" name="bok" id="bok" value"Guardar">
</form>

Esto haría que se llame a la función validar() cuando se aprieta el botón de submit, pero se envía solo si pasó la validación.

2votos

Gustavo Puntos1350

Validado desde JavaScript con expresiones regulares, puedes usar una función como esta:

<script type="text/javascript">
    function validarHora(hora){
        // hh:mm
        var regExpHora = "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$";
        if(hora.match(regExpHora)){
            return true;
        } else {
            return false;
        }
    }
    console.log(validarHora("12:25"));
    console.log(validarHora("14:60"));
    console.log(validarHora("25"));
    console.log(validarHora("10:59"));
    console.log(validarHora("10:0"));
    console.log(validarHora("10:00"));
    console.log(validarHora("1200"));
    console.log(validarHora("12"));
</script>

Ahora si quieres validarlo desde PHP usas la misma expresión regular, solo utilizas el método preg_match

0voto

top21tk comentado

Gracias Gustavo.

Podrías indicarme como llamo a la función con el formulario?

<form action=rsv_in.php method=POST>
<input type=text name=fecha>
<input type=text name=desde>
...
<input type=submit>
<form>

Muchas gracias

0voto

Gustavo comentado

Creas esa función en en el head.
Añadele el atributo name al formulario cosa que quede algo así:

<form name="reserva" method="post" action...

En vez de un input type submit, crea un input type button, le añades una función onclick así

<input type="button" onclick="validar();">

ahora creas una función validar en javascript que tenga algo así

function validar(){
    var form = document.reserva;
    if(!validarHora(form.fecha.value)){
        alert("fecha no válida");
        form.fecha.value = "";
        return false;
    }
    document.reserva.submit();
}

Bueno algo así es lo que debes colocar, espero haber sido de ayuda, consulta sobre validación de formularios con JavaScript para más información

0voto

top21tk comentado

Genial.
Gracias Gustavo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta