Avatar billede aske2 Nybegynder
25. november 2002 - 15:02 Der er 8 kommentarer og
1 løsning

Kald af funktion?

Jeg har en formular, hvor jeg gerne vil sikre mig, at der er indtastet noget i nogle af felterne. Jeg har lavet et javascript i en ekstern fil sådan:

<script language =javascript>
function indtastetfirmanavn(firmanavn)
{
    if (firmanavn == "")
    {
        return false
    }
}

function indtastetkontaktperson(kontaktperson)
{
    if (kontaktperson == "")
    {
        return false
    }
}

function indtastetgade(gade)
{
    if (gade == "")
    {
        return false
    }
}

function indtastetpostnummer(postnummer)
{
    if (postnummer == "")
    {
        return false
    }
}

function indtastetbyen(byen)
{
    if (byen == "")
    {
        return false
    }
}

function indtastetland(land)
{
    if (land == "")
    {
        return false
    }
}

function indtastettelefon(telefon)
{
    if (telefon == "")
    {
        return false
    }
}

function afsendelse(form)
{
    if (!indtastetfirmanavn(form.firmanavn.value)
    {
        alert("Der skal indtastes firmanavn")
        form.firmanavn.focus()
        form.firmanavn.select()
        return false
    }
    if (!indtastetkontaktperson(form.kontaktperson.value)
    {
        alert("Der skal indtastes kontaktperson")
        form.kontaktperson.focus()
        form.kontaktperson.select()
        return false
    }

    if (!indtastetgade(form.gade.value)
    {
        alert("Der skal indtastes adresse")
        form.gade.focus()
        form.gade.select()
        return false
    }

    if (!indtastetpostnummer(form.postnummer.value)
    {
        alert("Der skal indtastes postnummer")
        form.postnummer.focus()
        form.postnummer.select()
        return false
    }

    if (!indtastetbyen(form.byen.value)
    {
        alert("Der skal indtastes by")
        form.byen.focus()
        form.byen.select()
        return false
    }

    if (!indtastetland(form.land.value)
    {
        alert("Der skal indtastes land")
        form.land.focus()
        form.land.select()
        return false
    }

    if (!indtastettelefon(form.telefon.value)
    {
        alert("Der skal indtastes telefonnummer")
        form.telefon.focus()
        form.telefon.select()
        return false
    }
}
</script>

Spørgsmålet er så, hvordan jeg så skal gøre ovre i min formular? Jeg har gjort sådan her i min index.php i head-sektionen:

<script type="text/javascript" src="check_indtast.js">
</script>

og så forsøgt at gøre sådan her i min formular:

<input type="submit" name="submit" value="Afsend" class="knap" onSubmit="afsendelse(form)"

Men det virker ikke! Er der en, der kan fortælle mig, hvad det er jeg gør galt? Jeg har ingen erfaring med javascript og skal kun lige bruge det til ovenstående.
Avatar billede misbruger Nybegynder
25. november 2002 - 15:31 #1
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function checkFields() {
df = document.formName
missinginfo = "";
    if (df.Feltnavn1.value < 1){
    missinginfo += "\n    -  Du har ikke udfyldt feltavn1";
}
    if (df.Feltnavn1.value < 1){
    missinginfo += "\n    -  Du har ikke udfyldt feltavn2";
}
if (missinginfo != "") {
missinginfo ="_____________________________\n" +
"Du mangler at:\n" +
missinginfo + "\n_____________________________" +
"\nPrøv venligst igen!";
alert(missinginfo);
return false;
}
else return true;
}
//  End -->
</script>

I din form sætter du så....

onSubmit="return checkFields();"

I ovenstående script skal du udskifte:
formName = Til navnet på din form
feltnavn1, feltnavn2.... = Til navnene på dine felter
Avatar billede aske2 Nybegynder
25. november 2002 - 15:45 #2
Kan man ikke gøre det noget i stil med det jeg har gjort? Jeg har det fra IDG hæftet om javascripts. Jeg kan nemlig overhovedet ikke forstå, hvad det er, der sker i dit eksempel.
Avatar billede aske2 Nybegynder
26. november 2002 - 11:49 #3
Det javascript jeg har lavet fungerer fint, hvis det står i index.php i head-sektionen, men ikke hvis jeg vil lave det som eksternt. Hvordan inkluderer man et eksternt javascript?
Avatar billede Slettet bruger
26. november 2002 - 16:33 #4
aske2>> Det er meget underligt, at det virker hvis du skriver det internt, for det er nemlig behæftet med adskillige kritisk fejl.

Gør det nemme og lav noget à la det her:

<script>
function valider(frm) {
if (frm.felt1.value == "") {
alert("Felt 1 bla bla bla");
return false;
}
if (frm.felt2.value == "") {
alert("Felt 2 bla bla bla");
return false;
}
if (frm.felt3.value == "") {
alert("Felt 3 bla bla bla");
return false;
}
//osv.
return true;
}
</script>

Og i din form:

<form ... onSubmit="return valider(this);">

P.S. Det er meget vigtigt med return i formen!
Avatar billede aske2 Nybegynder
26. november 2002 - 19:00 #5
phoenixv>>
Jeg har følgende i min index.php i head-sektionen:

<script type="text/JavaScript">
<!--
function valider (form)
{
    if (form.firmanavn.value.length > 0 )
    {
  }
    else
    {
      alert ("Feltet Firmanavn skal udfyldes");
    form.firmanavn.focus();
    return false;
  };

    if (form.kontaktperson.value.length > 0)
    {
    }
    else
    {
        alert ("Feltet Kontaktperson skal udfyldes");
    form.kontaktperson.focus();
    return false;
  };

    if (form.gade.value.length > 0)
    {
    }
    else
    {
        alert ("Feltet Adresse skal udfyldes");
      form.gade.focus();
      return false;
  };

    if (form.postnummer.value.length > 0)
    {
    }
    else
    {
        alert ("Feltet Postnummer skal udfyldes");
      form.postnummer.focus();
      return false;
  };

    if (form.byen.value.length > 0)
    {
    }
    else
    {
        alert ("Feltet By skal udfyldes");
    form.byen.focus();
    return false;
  };

    if (form.land.value.length > 0)
    {
    }
    else
    {
        alert ("Feltet Land skal udfyldes");
    form.land.focus();
    return false;
  };

if (form.telefon.value.length > 0)
    {
    }
    else
    {
        alert ("Feltet Telefon skal udfyldes");
      form.telefon.focus();
    return false;
  };
return true; 
};   
//-->
</script>

Og dette i formularen:

<form name="forespørgsel" method="post" onsubmit="return valider(this);" action="send_form.php">

Hvad skal jeg gøre for at få det over i en ekstern fil? Jeg har i øvrigt forsøgt med noget tilsvarende dit forslag, men jeg kunne ikke få det til at fungere. Det jeg har lavet fungerer dog fint, men... jeg vil helst ikke have det i index.
Avatar billede Slettet bruger
27. november 2002 - 13:52 #6
Du tager bare alt mellem script-tagsene og smider det ind i en fil, som du kalder "ekstern.js". Den inkluderer du på din index-side således:

<script type="text/javascript" language="JavaScript" src="ekstern.js"></script>

Dog skal du ikke have <-- og //--> med i den eksterne fil.

Men din kode er nu unødvendigt lang. Fx skriver du:

if (form.firmanavn.value.length > 0 )
    {
  }
    else
    {
      alert ("Feltet Firmanavn skal udfyldes");
    form.firmanavn.focus();
    return false;
  };

Hvorfor ikke bare (?):

if (form.firmanavn.value.length == 0 )
      alert ("Feltet Firmanavn skal udfyldes");
    form.firmanavn.focus();
    return false;
  };
Avatar billede aske2 Nybegynder
27. november 2002 - 14:55 #7
phoenixv>> Jeg fandt ud af, at jeg jo ikke i det eksterne script skulle have <script...> osv. med - det er jo i index. Jeg har i øvrigt erstattet koden med dit kortere eksempel. Du skal have tak for hjælpen og kan du så ikke lige smide et svar? Så skal du få point :-)
Avatar billede Slettet bruger
28. november 2002 - 12:14 #8
Svar
Avatar billede aske2 Nybegynder
28. november 2002 - 20:26 #9
Hov du har jo lagt et svar! Du får straks point :-)
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