validação JS no IE

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!
 
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!


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:
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:
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'.
 
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....
 
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.
 
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?
 
Back
Topo