Validando Hora com JavaScript

4 respostas
aline_marques

[color=violet][/color]
Olá pessoal!

Eu estou add um javascript na minha página em jsf.
O script valida o horário, coloca os : e informa se o horário é válido ou não.
O code é esse:

[color=red][/color]

function Mascara_Hora(Hora){

var hora01 = ‘’;

hora01 = hora01 + Hora;

if (hora01.length == 2){

hora01 = hora01 + ‘:’;

document.forms[0].Hora.value = hora01;

}

if (hora01.length == 5){

Verifica_Hora();

}

}

function Verifica_Hora(){

hrs = (document.forms[0].Hora.value.substring(0,2));

min = (document.forms[0].Hora.value.substring(3,5));

estado = “”;

if ((hrs < 00 ) || (hrs > 23) || ( min < 00) ||( min > 59)){

estado = “errada”; }
if (document.forms[0].Hora.value == “”) {

estado = errada;

}

if (estado == errada) {

alert(Hora invalida!);

document.forms[0].Hora.focus();

}

}

Nessa função ele tem como parâmetro(não sei se é assim que se fala em javascript) o valor hora isso ele recebe da página, que tem esse code:

sendo que eu chamo o script certinho com o codigo la, que chama o arquivo em extensão .js

O problema não é isso funcionar, se vcs testarem ai, ele funciona certinho , o problema é qdo eu crio outro input e chamo essa função ai não funciona mais!!
Eu queria saber como é que eu chamo a mesma função em javascript so alterando os parametros?Sendo que qdo for o 1º inout ele recebe o valor Hora e valida e qdo for o 2º input ele recebe o valor Hora2 e valida, alguém tem i´dia de como se faz isso?

4 Respostas

andreiribas

é porque na sua função js vc só usa o campo document.forms[0].Hora pra validar. se quiser uma função mais generica, pode fazer assim:

function Mascara_Hora(Hora, campo){
   var hora01 = '';
   hora01 = hora01 + Hora;
   if (hora01.length == 2){
      hora01 = hora01 + ':';
      campo.value = hora01;
   }
   if (hora01.length == 5){
      Verifica_Hora(campo);
   }
}

function Verifica_Hora(campo){
   hrs = (campo.value.substring(0,2));
   min = (campo.value.substring(3,5));
   estado = "";
   if ((hrs < 00 ) || (hrs > 23) || ( min < 00) ||( min > 59)){
      estado = "errada";
   }

   if (campo.value == "") {
      estado = "errada";
   }
   if (estado == "errada") {
      alert("Hora invalida!");
      campo.focus();
   }
}

dai pra chamar a função, você pode fazer:

ou só passar o this, e o value vc pega do campo mesmo.

aline_marques

Eu entendi que se eu usar so o document.forms[0] só estarei validando um campo, mas o que vc fez no input eu não entendi, na verdade é isso o que eu quero fazer:


Então estarei criando dois inputs certo?Agora como é que a funçaõ em js sabe que no 1° input é esse id que ela deve validar e no 2° input é outro id para validar?
Pq eu tentei fazer assim como vc fez e a função nem funciona =(

O problema é saber como essa função muda de parâmetro!

Espero que alguem me ajude.

andreiribas

Aline, é que você está passando o campo junto com a função que eu te mostrei, quando você digita o this no parâmetro.

é a mesma coisa que em vez de this, eu tivesse usado document.forms[0].Hora.value, para o 1o e document.forms[0].Hora1.value para o segundo input.
como você está passando o campo, não precisa de outra referência para o campo, se você alterar o parâmetro o campo também altera.

aline_marques

EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

Consegui !!!

Cara valeu mesmo!

Muito obrigada, acabou de salvar meu projeto rsrsrsr

Valeu!!!

Criado 5 de novembro de 2007
Ultima resposta 8 de nov. de 2007
Respostas 4
Participantes 2