1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

validação JS no IE

Discussão em 'Web Development' iniciada por toblesu, 25 de Janeiro de 2008. (Respostas: 6; Visualizações: 1773)

  1. toblesu

    toblesu Power Member

    Boas,

    Estou a implementar uma página, e a minha validação de formulário, por javascript, não está a funcionar no IE.. enquanto no FF tudo "cinco estrelas"... conclusão, guarda-me o formulário "sem dados", enquanto como obvio não deveria fazê-lo.....


    será que me podem dar umas dicas para que isto nao aconteça...

    obrigado!
     
  2. p3dro

    p3dro Power Member


    Coloca aqui o código, pode ser que alguém te ajude a encontrar as falhas.

    Disseste que o teu formulário era guardado sem dados, por falhar na tal validação do IE, deixo-te 1 conselho, verifica sempre os dados no lado do servidor
    :x2:
     
    Última edição: 25 de Janeiro de 2008
  3. toblesu

    toblesu Power Member

    falhas axo que não tem.... porque senão nem no firefox daria.. e o estranho é que no fire fox funciona a 100% e no IE não..... este ficheiro, já funcionou associado a outros formulários, mas agora tem novas funções e penso que possa ser por causa disso que crie estrilho...... algumas das funções que lá estão foram adaptadas....

    o código é:

    Código:
    // JavaScript Document
    // JavaScript Document
    
    -->FUNÇÂO DE PREENCHIMENTO DO CAMPO EM FALTA COM COR
    function focus_erro(campo){
        campo.focus();
        campo.select();
        campo.style.background = 'grey';
    }
    
    -->VALIDAÇÂO DO LOGIN
    function valida_login(elem){
        if (elem.username.value ==""){
            alert("Por favor, insira o nome de utilizador!");
            focus_erro(elem.username)
            return false
            }
        if (elem.password.value ==""){
            alert("Por favor, insira a palavra-chave!");
            focus_erro(elem.password)
            return false
            }
        else{
            var x=window.confirm("Vai entrar numa área reservada. Tem a certeza que deseja continuar?");
            if (!x){
                return false
            }
        }
    }
    
    --> VALIDAÇÂO DO REGISTO
    function validar(elem){
        if (elem.nome.value =="")
        {
            alert("O campo Nome deve ser preenchido!");
            focus_erro(elem.nome)
            return false
        }
        
        if(elem.empresa.value =="")
        {
            alert("O campo Empresa deve ser preenchido!");
            focus_erro(elem.empresa)
            return false
        }
    
        if (elem.morada.value ==""){
            alert("O campo Morada deve ser preenchido!");
            focus_erro(elem.morada)
            return false
            }
        if (elem.cidade.value ==""){
            alert("O campo Cidade deve ser preenchido!");
            focus_erro(elem.cidade)
            return false
            }
        
        if (elem.telf.value ==""){
            alert("O campo Telefone deve ser preenchido!");
            focus_erro(elem.telf)
            return false
        }
        if (elem.telf.value != "")
            {
                var num=elem.telf.value
                var x=num.length
                if(x!=9)
                {
                    alert("Nº de Telefone tem que conter 9 dígitos.");
                    focus_erro(elem.telf)
                    return false
                }
                if(isNaN(elem.telf.value))
                {
                    alert("O nº de Telefone só pode conter valores numéricos!");
                    focus_erro(elem.telf)
                    return false
                } 
                if (elem.telf.value <200000000)
                {
                    alert("Nº de Telefone Incorrecto. O contacto telefónico deve começar com 2 ou 9");
                    focus_erro(elem.telf)
                    return false
                }
            }
        
        if(elem.fax.value =="")
        {
            alert("O campo Fax deve ser preenchido!");
            focus_erro(elem.fax)
            return false
        }
    
        if (elem.fax.value !="")
        {    
            var num=elem.fax.value
            var x=num.length
            if(x!=9)
            {
                alert("Nº de Fax tem que conter 9 dígitos.");
                focus_erro(elem.fax)
                return false
            }
            if (elem.fax.value<200000000)
            {
                alert("Nº de Fax Incorrecto. O número de fax deve começar com 2.");
                focus_erro(elem.fax)
                return false
            }
            if(isNaN(elem.fax.value)){
                alert("O nº de Fax só pode conter valores numéricos!");
                focus_erro(elem.fax)
                return false
            }
            
        }
        
        if(elem.email.value =="")
        {
            alert("O campo E-mail deve ser preenchido!");
            focus_erro(elem.email)
            return false
        }
    
        if(elem.email.value != "")
        {
            if (echeck(elem.email.value)==false)
            {
                alert_email();
                focus_erro(elem.email)
                return false
            }
        }
        
        if(elem.username.value =="")
        {
            alert("O campo Username deve ser preenchido!");
            focus_erro(elem.username)
            return false
        }
    
            
        if (elem.passwd.value ==""){
            alert("O campo Password deve ser preenchido!");
            focus_erro(elem.passwd)
            return false
            }
        
        
            
        if (elem.conf.value ==""){
            alert("O campo Confirmação deve ser preenchido!");
            focus_erro(elem.conf)
            return false
        }
        
        if ((elem.passwd.value !="")&&(elem.conf.value !="")){
            if(validarSenha(elem.passwd.value,elem.conf.value)== false)
            {
                focus_erro(elem.conf)
                return false
            }
        }        
        else
        {
            var x=window.confirm("Confirme para continuar.");
            if (!x)
            {
                return false
            }
        }
    }
    
    --> VALIDAR CONFIRMAÇÂO DE SENHA NO REGISTO
    function validarSenha(senha1,senha2)
    {
        if (senha1 != senha2)
        {
            alert ("As passwords têm que ser iguais. Por favor repita a inserção.");
            return false
        }
        else
        {
            return true
        }
    }
    
    function alert_email(){
        alert ("Inseriu um e-mail inválido!");
    }
    
    
    --> DHTML email validation script. Courtesy of SmartWebby.com ([URL]http://www.smartwebby.com/dhtml/[/URL])
    -->Validar endereço de email
    function valida_email(form){
        if (form.email.value == ""){
            alert ("Tem de inserir o email!");
            focus_erro(form.email)
            return false;
        }else{
            if (form.email.value != ""){
                var emailID=document.recup_pass.email;
                if ((emailID.value==null)||(emailID.value=="")){
                    alert_email();
                    emailID.focus()
                    return false
                }
                if (echeck(emailID.value)==false){
                    emailID.focus()
                    return false
                }
                return true
            }else{
                var x=window.confirm("Tem a certeza que deseja criar a empresa?");
                if (!x){
                    return false;
                }
            }
        }
    }
    
    -->DHTML email validation script. Courtesy of SmartWebby.com ([URL]http://www.smartwebby.com/dhtml/[/URL])
    function echeck(str) {
            var at="@"
            var dot="."
            var lat=str.indexOf(at)
            var lstr=str.length
            var ldot=str.indexOf(dot)
            if (str.indexOf(at)==-1){
                alert_email();
               return false
            }
            if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
                alert_email();
               return false
            }
            if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
                alert_email();
                return false
            }
             if (str.indexOf(at,(lat+1))!=-1){
                alert_email();
                return false
             }
             if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
                alert_email();
                return false
             }
             if (str.indexOf(dot,(lat+2))==-1){
                alert_email();
                return false
             }    
             if (str.indexOf(" ")!=-1){
                alert_email();
                return false
             }
              return true                    
        }
        
    -->


    espero que me possam ajudar! É que não percebo porquê!!

    obrigado
     
    Última edição pelo moderador: 26 de Janeiro de 2008
  4. slack_guy

    slack_guy Power Member

    Vou sublinhar o que o p3dro disse acima: 'verifica sempre os dados no lado do servidor.

    Se só tens tempo para fazer uma validação do input, valida no servidor. Se te sobrar tempo, faz a validação no lado do cliente (JavaScript). Nunca, mas ___NUNCA___ graves nada na BD sem antes validar no servidor. Coisas muito ruins podem acontecer (e se podem acontecer.... vão __mesmo__ acontecer).

    Ou seja, não te preocupes com o JavaScript sem antes resolveres a validação do 'outro lado'.
     
  5. toblesu

    toblesu Power Member

    obviamente que a validação tb está feita do outro lado.....té porque existem certas condições que têm que se verificar para que os dados sejam guardados na base de dados, uma delas por exemplo garantir que o utilizador seja único! isso tenho feito e está a funcionar! não me podia fazer de outra forma.....

    só queria mesmo que o JS ficasse a funcionar também no IE.. té porque a maior parte deste código já funcionou lá.....

    obrigado na mesma....
     
  6. Uma pergunta estás a usar IE7?

    Normalmente quando pego a informação de um campo do form faço sempre um document.getElementById('nomecampo').value

    Depois tens variantes desse getElementById para funcionar em todos os browsers.
     
  7. toblesu

    toblesu Power Member

    não.... tenho IE6...

    de facto já scripts com essa nomenclatura... opá nunca usei porque corria-me bem tanto no 6 como no 7... poderei alterar para document.getElementById('nomecampo'), mas confesso que também não o fiz por preguiça.. tratava-se de um ficheiro bastante extenso.....

    poderá ser solução?
     

Partilhar esta Página