Avatar billede enlize Nybegynder
12. januar 2001 - 09:57 Der er 12 kommentarer og
2 løsninger

Sender værdier til en funktion

I en form sender jeg 2 værdier til en funktion - men min funktion kan tilsyneladende ikke læse disse. Hvad gør jeg galt?

-- Lidt sourcekode --

<script language=\"javascript\">
<!--
    function checkFields(formName, formField1) {
        if(document.formName.formField1.value.length==0) {
            alert(\"skal udfyldes\");
                document.formName.formField1.focus()
                return false;
        }
        return true;
    }
//-->
</script>

<form method=\"POST\" action=\"test.asp\" name=\"form1\" onsubmit=\"return checkFields(form1, departmentName);\">
<input type=\"text\" name=\"departmentName\">
</form>
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:10 #1
Jeg har lavet en funktion der laver check på alle values...


function validateForm (form) {
    var radio = \"\";
    var radiochecked = false;

    for (i = 0; i < document.form.elements.length; i++) {
        var which = document.form.elements[i];
        var alertMsg = \"Alle felter *skal* udfyldes\\n\";
        var sizeAlertMsg = \"Et passwordfelt skal indeholde mindst 6 karakterer\\n\";

        if (which.type == \"text\") {
            if (which.value == \"\") {
                alert(alertMsg + \"> \" + which.name);
                which.focus();
                return false;
            }
        } else if (which.type == \"password\") {
            if (which.value == \"\") {
                alert(alertMsg + \"> \" + which.name);
                which.focus();
                return false;
            }
            if (which.value.length < 6) {
                alert(sizeAlertMsg + \"> \" + which.name);
                which.focus();
                return false;
            }
        } else if (which.type == \"textarea\") {
            if (which.value == \"\") {
                alert(alertMsg + \"> \" + which.name);
                which.focus();
                return false;
            }   
        } else if (which.type == \"select-one\") {
            if (which.options.selectedIndex == -1) {
                alert(alertMsg + \"> \" + which.name);
                which.focus();
                return false;
            }
            if (which.options.value == -1) {
                alert(alertMsg + \"> \" + which.name);
                which.focus();
                return false;
            }
        } else if (which.type == \"select-multiple\") {
            if (which.options.selectedIndex == -1) {
                alert(alertMsg + \"> \" + which.name);
                which.focus();
                return false;
            }
        }

        if (which.type == \"radio\") {
            radio = which.name;
            if (which.checked == true) {
                radiochecked = true;
            }
        }
    }
    if (radiochecked == false) {
        alert(alertMsg + \"> \" + radio);
        which.focus();
        return false;
    }   
    return true;
}
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:13 #2
I dit eksempel, skal du bruge :
<form method=\"POST\" action=\"test.asp\" name=\"form1\" onsubmit=\"return checkFields(form1, document.form1.departmentName.value);\">
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:14 #3
<script language=\"javascript\">
<!--
    function checkFields(formName, formField1) {
        alert (formName + \" :: \" + formField1);
        return false;
    }
//-->
</script>

<form method=\"POST\" action=\"test.asp\" name=\"form1\" onsubmit=\"return checkFields(form1, document.form1.departmentName.value);\">
<input type=\"text\" name=\"departmentName\">
<INPUT TYPE=\"submit\" NAME=\"submit\">
</form>
Avatar billede enlize Nybegynder
12. januar 2001 - 10:19 #4
Det virker desværre heller ikke. Når du udskriver(alert) document.form1.departmentName.value har denne ikke nogen værdi
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:24 #5
Sidste er testet i IE5.5 og NN6.0 uden problemer på en Windows maskine

<script language=\"javascript\">
<!--
    function checkFields(formName, formField1) {
        alert (formName + \" :: \" + formField1);
        return false;
    }
//-->
</script>

<form method=\"POST\" action=\"test.asp\" name=\"form1\" onsubmit=\"return checkFields(form1, document.form1.departmentName.value);\">
<input type=\"text\" name=\"departmentName\">
<INPUT TYPE=\"submit\" NAME=\"submit\">
</form>
Avatar billede enlize Nybegynder
12. januar 2001 - 10:33 #6
Når jeg køre dit script får jeg fgl. fejl:
document.formName.formField is null or not an object....
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:34 #7
Hvilken browser / platform ?
Avatar billede enlize Nybegynder
12. januar 2001 - 10:35 #8
win2k og ie 5.5
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:37 #9
og du kører 100% det script jeg lavede i et seperat dokument ?
Avatar billede enlize Nybegynder
12. januar 2001 - 10:39 #10
Dit script virker fint, men hvis jeg sætter en if statement ind, f.eks if(document.formName.formField1.value.lenght==0) {
osv....

så kommer den med fejlen...
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:43 #11
jeg har tidligere haft problemer med at sende formName med som parameter... Jeg graver lidt i gemmerne...
Avatar billede enlize Nybegynder
12. januar 2001 - 10:46 #12
Jeg har selv fundet ud af det :)... men ellers tak for hjælpen.

Du får 50 point for din indsats
Avatar billede enlize Nybegynder
12. januar 2001 - 10:46 #13
hmm
Avatar billede limemedia Nybegynder
12. januar 2001 - 10:55 #14
jeg rettede det du spurgte om... at der er flere problemer i scriptet skal vel ikke gå ud over mig :)
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