Avatar billede ssv Nybegynder
03. december 2008 - 17:03 Der er 5 kommentarer og
1 løsning

Flere functions i én?

Hello.

Jeg har flere former for validering på en form. Der ligger flere functions i mit javascript der validerer de forskellige felter, afhængigt af indhold.

Et eksempel kunne være:
// Validér email
    function validateMail(f) {
        var inputNavn = f.inputNavn;
        var emailreg=/^.+@.+\..{2,4}$/

        if (!inputNavn.value.match(emailreg)) {
            alert("Indtast en gyldig email adresse!")
            inputNavn.focus();
            return false;
        }
        return true;
    }
// Validér telefonnummer
    function validatePhone(f) {
        var s = f.inputNavn.value.replace(" ", "");
        if (!/^[0-9\/-]{7,20}$/.test(s)) {
            alert("Telefonnummeret er ikke korrekt");
            f.inputNavn.focus();
            return false;
        }
        return true;
    }

På formen ligger 2 functions i en return når formen submittes.

Et eksempel:
onsubmit="return validateMail(this) && validatePhone(this)">

Mit spørgsmål er så:
Er det muligt bare at ligge det hele i én function eller noget lignende, så jeg er fri for at skulle skrive alle de validerings functions jeg bruger i onsubmit?

Jeg skal ærligt indrømme jeg ikke har det fjerneste forstand på javascripts og vil blot høre om det er muligt at gøre det hele lidt nemmere :-)
Avatar billede kalp Novice
03. december 2008 - 17:14 #1
det her f.eks

onsubmit="return validateMail(this) ">

function validateMail(f) {
        var inputNavn = f.inputNavn;
        var emailreg=/^.+@.+\..{2,4}$/

        if (!inputNavn.value.match(emailreg)) {
            alert("Indtast en gyldig email adresse!")
            inputNavn.focus();
            return false;
        }
        return validatePhone(f);
    }
// Validér telefonnummer
    function validatePhone(f) {
        var s = f.inputNavn.value.replace(" ", "");
        if (!/^[0-9\/-]{7,20}$/.test(s)) {
            alert("Telefonnummeret er ikke korrekt");
            f.inputNavn.focus();
            return false;
        }
        return true;
    }
Avatar billede olebole Juniormester
03. december 2008 - 17:39 #2
<ole>

- og jeg ville nok samle de to funktioner. F.eks (forudsat dine felter hedder 'email' og 'phone'):

function validateMail(f) {
        var inputNavn = f.email;
        var emailreg=/^.+@.+\..{2,4}$/

        if (!inputNavn.value.match(emailreg)) {
            alert("Indtast en gyldig email adresse!")
            inputNavn.focus();
            return false;
        }
       
        inputNavn = f.phone;
        var s = inputNavn.value.replace(" ", "");
        if (!/^[0-9\/-]{7,20}$/.test(s)) {
            alert("Telefonnummeret er ikke korrekt");
            f.inputNavn.focus();
            return false;
        }
       
        return true;
}
/mvh
</bole>
Avatar billede olebole Juniormester
03. december 2008 - 17:41 #3
Hov  =)

Ikke:
    f.inputNavn.focus();

- i den sidste ... bare:
    inputNavn.focus();
Avatar billede ssv Nybegynder
23. december 2008 - 10:57 #4
Nu er jeg ikke lige den stærkeste i javascripts, så kan du forklare hvad jeg skal gøre hvis jeg sammenlægge 8 functions i én? Jeg kan se hvad du gør i dit eksempel ovenfor, men jeg er mere interesseret i _hvordan_ og _hvorfor_ jeg skal gøre sådan :-)
Avatar billede ssv Nybegynder
14. januar 2009 - 13:27 #5
Lad os få lukket her - smid et svar så vi kan komme videre ;-)
Avatar billede kalp Novice
14. januar 2009 - 15:31 #6
Jeg ved ikke hvem der skal smide et svar..
Ligger et svar så må i finde ud af resten:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester