É possível tratar informações do servidor no javascript?

2 respostas
carol_programadora

Oi gente,

estou com um problema e não sei se é possível implementar isso.

Tenho que desenvolver uma tela que é o seguinte:

Ao abrir a tela são carregadas informações dinâmicas do servidor, posteriormente com o preenchimento dos campos do usuário eu faço determinadas validações, só que o cliente exigiu que as validações sejam feitas no lado cliente e só enviem ao servidor no final.

Ex:

Dependendo do usuário tenho no servidor 2 informações que são configuradas ao abrir a página:

...
int periodoMinimo = 10;
Date dataMinima = 16/03/2012;
...

E na tela eu tenho dois campos pro usuários informar o “Período Mínimo” e “Data mínima”, ao usuário digitar eu tenho que validar se o período é maior que 10 e a data é maior que 16/03/2012, só que validar sem ir ao servidor! :cry:

É possível ao abrir a tela eu configurar no javascript o valor dessas variáveis e depois validar sem ir ao servidor? Só que essas variáveis precisam durar enquanto a tela estiver aberta. Alguém tem alguma dica ou rumo que eu possa seguir?

Obrigada.

2 Respostas

FernandoFranzini

Me desculpe mas não existe esse tipo de coisa…
Trazer validações para o cliente principalmente web é propenso a erros, inconsistências por brechas de segurança existente no javascript. A regra básica de segurança é NUNCA VALIDE SOMENTE NO JAVASCRIPT!
Mesmo se vc fizer, vai ter que revalidar tudo no servidor…por isso tente falar com ele sobre isso.
Fale para seu cliente que hoje existe uma abordagem que chamamos de “AJAX” no qual é possível validar as coisas no servidor com as mesmas propriedades de como se fossem feitas no cliente.

Sim…transfira uma copia dos objetos do servidor para o navegador via XML ou JSON e valide usando JavaScript.

Boa decisão!!! kkk

G

Agora, respondendo a sua pergunta:

<script language="javascript">
    /*
    Autor.......: Kenneth R. B. Carletto
    Contato.....: MSN([email removido]) E-Mail([email removido])
    Data........: 20/08/07
    Finalidade..: Função que retorna qual das duas datas (passadas como parametro)
                  é maior, baseada no objeto Date e sua funcao getTime();
    */
 
    // gE('idElemento'): Simplesmente retorna uma referencia ao objeto 'idElemento'
    function gE(idElemento){
        return document.getElementById(idElemento);
    }
 
    function dataMaior(dt1,dt2){
        // dt1 e dt2: Devem ser tipo String, para evitar confusao de tipos
        if(typeof dt1 != "string" ||
           typeof dt2 != "string"){
            alert("As datas devem ser passadas como strings");
            return false;
        }
 
        // dt1 e dt2: Alem de strings, dt1 e dt2 devem obedecer aos formatos de data do Brasil (dd/mm/aa ou dd/mm/aaaa)
        padrao = /d{2}/d{2}/(?:d{2}|d{4})/;
        if(!padrao.test(dt1) ||
           !padrao.test(dt2)){
            alert("Formato de data invalido.nUtilize dd/mm/aa ou dd/mm/aaaa");
            return false;
        }
 
        // Instanciamos as datas, para poder usar getTime();
        data1 = new Date(dt1);
        data2 = new Date(dt2);
        if(!data1 || !data2){
            alert("Erro ao criar objetos");
            return false;
        }
 
        // milliSegundos1: irá conter a quantidade de segundos corridos desde 1/1/1970 0h ate dt1
        milliSegundos1 = data1.getTime();
        // milliSegundos2: irá conter a quantidade de segundos corridos desde 1/1/1970 0h ate dt2
        milliSegundos2 = data2.getTime();
 
        // Comparando millisegundos para retornar a conclusão de quem é maior que quem...
        if(milliSegundos1 == milliSegundos2){
            alert("As datas são iguais");
            return true;
        } else if(milliSegundos1 > milliSegundos2){
            alert("Data 1 maior que data 2");
            return true;
        } else if(milliSegundos1 < milliSegundos2){
            alert("Data 2 maior que data 1");
            return true;
        } else return false;
    }
</script>
<input name="tdt1" value="10/01/07" type="text" />
<input name="tdt2" value="10/02/07" type="text" />
<input value="Maior" onclick="dataMaior(gE('tdt1').value,gE('tdt2').value)" type="button" />
Criado 16 de fevereiro de 2012
Ultima resposta 16 de fev. de 2012
Respostas 2
Participantes 3