2015-04-07 4 views
0

Проблема в том, что, похоже, что не работает мой JavaScript, и я потратил часы, пытаясь понять, почему я не могу найти явных ошибок, и я довольно новичок в JavaScript в целом, но я пытаюсь получить JavaScript для проверки кода в моей форме вместе с regEx, и на данный момент он ничего не делает.Javascript/RegEx не подтверждает HTML-форму

Heres код для моей формы:

<form action="ValideringVM.php" method="post" name="Registrer" onsubmit="return valider_alle()"> 
    <table> 
    <tr> 

     <td><h3> Personalia:</h3> </td> 
    </tr>  
    <tr> 
     <td> Fornavn: </td> 
     <td><input type="text" name="Fornavn" onChange="valider_fornavn()"/></td> 
     <td><div id="FeilFornavn">*</div></td> 
    </tr> 
    <tr> 
     <td> Etternavn: </td> 
     <td><input type="text" name="Etternavn" onChange="valider_etternavn()"/></td> 
     <td><div id="FeilEtternavn">*</div></td> 
    </tr> 
    <tr> 
     <td> Adresse: </td> 
     <td><input type="text" name="Adresse" onChange="valider_adresse()"/></td> 
     <td><div id="FeilAdresse">*</div></td> 
    </tr> 

    <tr> 
     <td> Postnr: </td> 
     <td><input type="text" name="Postnr" onChange="valider_postnr()"/></td> 
     <td><div id="FeilPostnr">*</div></td> 
    </tr> 
    <tr> 
     <td> Email: </td> 
     <td><input type="text" name="Email" onChange="valider_email()"/></td> 
     <td><div id="FeilEmail">*</div></td> 
    </tr> 
    <tr> 
     <td> Telefonnr: </td> 
     <td><input type="text" name="Telefonnr" onChange="valider_telefonnr()"/></td> 
     <td><div id="FeilTelefonnr">*</div></td> 
    </tr> 
    <tr> 
     <td> Lag Brukernavn: </td> 
     <td><input type="text" name="Brukernavn" onChange="valider_brukernavn()"/></td> 
     <td><div id="Feilbruker">*</div></td> 
    </tr> 
    <tr> 
     <td> Lag Passord: </td> 
     <td><input type="password" name="Passord" onChange="valider_passord()"/></td> 
     <td><div id="Feilpassord">*</div></td> 
    </tr> 
    <tr> 
     <td><input type="submit" name="Send" value="Send"/></td> 
    </tr> 
    </table> 
    </form> 

и ЭРВО моего кода JavaScript:

<script type="text/javascript"> 
    function valider_fornavn() 
    { 
     regEx = /^[a-zA-ZæøåÆØÅ .\- ](2,20)$/; 
     OK = regEx.test(document.Registrer.Fornavn.value); 
     if(!OK) 
     { 
      document.getElementById("FeilFornavn").innerHTML="Feil i Fornavn"; 
      return false; 
     } 
     document.getElementById("FeilFornavn").innerHTML=""; 
     return true; 
    } 

    function valider_etternavn() 
    { 
     regEx = /^[a-zA-ZæøåÆØÅ .\- ](2,20)$/; 
     OK = regEx.test(document.Registrer.Etternavn.value); 
     if(!OK) 
     { 
      document.getElementById("FeilEtternavn").innerHTML="Feil i Etternavn"; 
      return false; 
     } 
     document.getElementById("FeilEtternavn").innerHTML=""; 
     return true; 
    } 

    function valider_adresse() 
    { 
     regEx = /^[a-zA-ZæøåÆØÅ 0-9.\- ](2,30)$/; 
     OK = regEx.test(document.Registrer.Adresse.value); 
     if(!OK) 
     { 
      document.getElementById("FeilAdresse").innerHTML="Feil i Adresse"; 
      return false; 
     } 
     document.getElementById("FeilAdresse").innerHTML=""; 
     return true; 
    } 

    function valider_postnr() 
    { 
     regEx = /^[0-9](4)$/; 
     OK = regEx.test(document.Registrer.Postnr.value); 
     if(!OK) 
     { 
      document.getElementById("FeilPostnr").innerHTML="Feil i Postnr"; 
      return false; 
     } 
     document.getElementById("FeilPostnr").innerHTML=""; 
     return true; 
    } 

    function valider_email() 
    { 
     regEx = /^[a-zA-ZæøåÆØÅ 0-9._%+-][email protected][a-zA-ZæøåÆØÅ 0-9.-]+\.[a-z]{2,4}$/; 
     OK = regEx.test(document.Registrer.Email.value); 
     if(!OK) 
     { 
      document.getElementById("FeilEmail").innerHTML="Feil i Email"; 
      return false; 
     } 
     document.getElementById("FeilEmail").innerHTML=""; 
     return true; 
    } 

    function valider_telefonnr() 
    { 
     regEx = /^[0-9]{8}$/; 
     OK = regEx.test(document.Registrer.Telefonnr.value); 
     if(!OK) 
     { 
      document.getElementById("FeilTelefonnr").innerHTML="Feil i Telefonnummer"; 
      return false; 
     } 
     document.getElementById("FeilTelefonnr").innerHTML=""; 
     return true; 
    } 

    function valider_brukernavn() 
    { 
     regEx = /^[a-zA-ZæøåÆØÅ 0-9](4,20)$/; 
     OK = regEx.test(document.Registrer.Brukernavn.value); 
     if(!OK) 
     { 
      document.getElementById("Feilbruker").innerHTML="Feil i brukernavnet"; 
      return false; 
     }  
     document.getElementById("FeilBruker").innerHTML=""; 
     return true; 
    } 


    function valider_passord() 
    { 
     regEx = /^[a-zA-ZæøåÆØÅ 0-9](4,20)$/; 
     OK = regEx.test(document.Registrer.Passord.value); 
     if(!OK) 
     { 
      document.getElementById("FeilPassord").innerHTML="Feil i passordet"; 
      return false; 
     }  
     document.getElementById("FeilPassord").innerHTML=""; 
     return true; 
    } 

    function valider_alle() 
    { 
     (e || window.event).preventDefault(); 
     FornavnOK = valider_fornavn(); 
     EtternavnOK = valider_etternavn(); 
     AdresseOK = valider_adresse(); 
     PostnrOK = valider_postnr(); 
     TelefonnrOK = valider_telefonnr(); 
     EmailOK = valider_email(); 
     BrukernavnOK = valider_brukernavn(); 
     PassordOK = valider_passord(); 

    } 
    if(FornavnOK && EtternavnOK && AdresseOK && PostnrOK && TelefonnrOK && EmailOK && BrukernavnOK && PassordOK) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 


    </script> 
+1

вам придется проверять поле за полем, а не form.value, используйте форму валидатора плагин или STH аналогичный добавить валидации в поле формы –

+0

Я думаю, что это может быть просто проблемой с скобками. Функция 'valider_alle()' закрывается непосредственно перед 'if ... else ...', которая определяла бы, была ли форма проверена или нет. Переместите скобу после 'else' и проверьте, не работает ли она –

+0

В качестве рекомендации: в следующий раз проверьте консоль ошибок в браузере. Все перечисленные выше ошибки были указаны в консоли, и после исправления форма была проверена без проблем. Знать, как отлаживать, почти так же важно, как знание кода. –

ответ

-1

последней функции valider_alle конца бандаж не установлен на свое место

function valider_alle() 
{ 
     (e || window.event).preventDefault(); 
     FornavnOK = valider_fornavn(); 
     EtternavnOK = valider_etternavn(); 
     AdresseOK = valider_adresse(); 
     PostnrOK = valider_postnr(); 
     TelefonnrOK = valider_telefonnr(); 
     EmailOK = valider_email(); 
     BrukernavnOK = valider_brukernavn(); 
     PassordOK = valider_passord(); 

//} this one must be at the end 
if(FornavnOK && EtternavnOK && AdresseOK && PostnrOK && TelefonnrOK && EmailOK && BrukernavnOK && PassordOK) 
{ 
     return true; 
} 
else 
{ 
     return false; 
} 

} 

и если вы гарантируете, что длина составляет от 2 до 20:

regEx = /^[a-zA-ZæøåÆØÅ .\- ](2,20)$/;// (and) is not for length 

оно должно быть написано:

regEx = /^[a-zA-ZæøåÆØÅ .\- ]{2,20}$/; 
+0

Спасибо за помощь, я закончил переписывание кода в jQuery и сделал его работу, но спасибо в любом случае! – Zoraan

Смежные вопросы