Avatar billede massman Nybegynder
04. september 2002 - 23:44 Der er 4 kommentarer og
1 løsning

mere enkelt validation

Har bikset en funktion sammen som må kunne gøres _meget_ nemmere =)

function tjek() {
if (document.forms._form.url.value==''||document.forms._form.url.value==document.forms._form.url.defaultValue) {
    alert("No " + document.forms._form.url.title + " entered...");
    document.forms._form.url.focus();
    }
else if (document.forms._form.name.value==''||document.forms._form.name.value==document.forms._form.name.defaultValue) {
    alert("No " + document.forms._form.name.title + " entered...");
    document.forms._form.name.focus();
    }
else if (document.forms._form.desc.value==''||document.forms._form.desc.value==document.forms._form.desc.defaultValue) {
    alert("No " + document.forms._form.desc.title + " entered...");
    document.forms._form.desc.focus();
    }
else {send();}
}

Man kan vel let lave en funktion der tjekker alle inputs på siden for '' men det er ikke alle felter der er påkrævede. Hvis man kunne lave så funktionen kun lavede alert ved .value='' hvis inputtets name var r_*

Altså så jeg kunne navngive dem der skal udfyldes <input type="text" name="r_*"> og dem der ikke skal <input type="text" name="*">
Avatar billede jakoba Nybegynder
05. september 2002 - 00:25 #1
Prøv generelt at indgå at bruge _ (understreg) i navne der skal behandles med javascript, det giver probler nu og da. Herunder har jeg dagt at felter hvis navn starter med 'chk' skal testes og ikke må være tomme:

function tjek() {
    var errors = 0;  // nr of errors found.
    var formEle = document.forms.elements;
    for ( var i=0; i<formEle.length; i++ ) {  // for each formelemet

        if ( formEle[i].name.substring(0,3) == "chk" ) { // dette felt skal checkes

            if ( formEle[i].value == "" ) {  // dette felt fejlede

                alert("No " + formEle[i].title + " entered...");
                formEle[i].focus();
                // du kan evt også blot sige  return false;  her istedet for at fortsætte
                // igennem alle felter når vi nu ved data ikke duer
                error += 1;
            }
        }
    }
    if ( errors > 0 ) {
        return false;  // fomdata did no pass all tests
    } else {
        return true;  // alt er iorden. send formularen
    }
}

mvh JakobA
Avatar billede massman Nybegynder
06. september 2002 - 17:22 #2
Får en 'length' is null or not an object
Avatar billede Slettet bruger
06. september 2002 - 17:27 #3
Linjen:

var formEle = document.forms.elements;

... skal skiftes ud med:

var formEle = document.forms["formNavn"].elements;
Avatar billede jakoba Nybegynder
06. september 2002 - 17:31 #4
sorry, det er mig der har misforstået din navngivning
linien:
    var formEle = document.forms.elements;
skal vist være:
    var formEle = document.forms._form.elements;

en forde vi har som sanskere er at vi kan lave sigende navne på dansk. uden stor risiko for at de navne vi laver falder sammen med et navn der er indbygget i javascript erller html's dokumentmodel

hvia su nu skrev
  <form name='gestebog' ... >
ville linien ovenfor være:
    var formEle = document.forms.gestebog.elements;

så har vi ikke blot elimineret det farlige _-tegn, men også fået et navn der hjælper lidt til at vide hvad den kode handler om.

mvh JakobA
Avatar billede massman Nybegynder
06. september 2002 - 19:47 #5
god pointe =)
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