Avatar billede lsolesen Nybegynder
12. september 2002 - 09:34 Der er 6 kommentarer og
1 løsning

Hvad er der galt med dette form-check

<script language="JavaScript" type="text/javascript">
<!-- Validering af kundens indtastede oplysninger

function Checkform(thisform)
{
    // Startværdier
    strError = 'Der opstod følgende fejl:\n\n';
    intError = 0;

    if (thisform.kursusstart.value == "")
    {
    strError = strError + '-Kursusbegyndelse mangler\n'
    intError = 1;
    thisform.kursusstart.focus();
    }     
   
    if (thisform.kursusslut.value == "")
    {
    strError = strError + '-Kursusslut mangler\n'
    intError = 1;
    thisform.kursusslut.focus();
    }     
   
    if (thisform.fornavn.value == "")
    {
    strError = strError + '-Fornavn mangler\n'
    intError = 1;
    thisform.fornavn.focus();
    }     

    if (thisform.efternavn.value == "")
    {
    strError = strError + '-Efternavn mangler\n'
    intError = 1;
    thisform.efternavn.focus();
    }

    if (thisform.adresse.value == "")
    {
    strError = strError + '-Navn mangler\n'
    intError = 1;
    thisform.adresse.focus();
    }

    // check e-mail
    var emailFilter="/^ *[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)*\.[a-zA-Z0-9]{2,4} *$/"
    if (!(thisform.email.value.match(emailFilter)))
    {
    strError = strError + "- Skriv venligst en rigtig e-mail-adresse.\n";
    intError = 1;
    thisform.email.focus();
    }

    // Check et hvilket som helst felt
    if (thisform.fldURL.value == "")
    {
    strError = strError + '- Adressen mangler\n'
    intError = 1;
    thisform.fldURL.focus();

    } 
       
      // Check et hvilket som helst felt
    if (thisform.fldAreaCode.value == "")
    {
    strError = strError + '- Postnummeret mangler\n'
    intError = 1;
    thisform.fldAreaCode.focus();
    }

    var checkOK = "0123456789-";
      var checkStr = thisform.fldAreaCode.value;
      var allValid = true;
      var decPoints = 0;
      var allNum = "";
      for (i = 0;  i < checkStr.length;  i++)
      {
        ch = checkStr.charAt(i);
        for (j = 0;  j < checkOK.length;  j++)
              if (ch == checkOK.charAt(j))
              {
            break;
                if (j == checkOK.length)
                {
                allValid = false;
                break;
                }
            allNum += ch;
            }
        }
        if (!allValid)
          {
        strError = strError + 'Skriv venligst kun tal i feltet \"Postnr\" field.'
          intError = 1;
        thisform.fldAreaCode.focus();
          }
    }

    if (thisform.fldPhone.value == "")
    {
    strError = strError + '-Postbyen mangler\n'
    intError = 1;
    thisform.fldPhone.focus();
    }

    if((!thisform.ryger[0].checked) || (thisform.ryger[1].checked)) 
    {     
    strErr = strErr +'- Du skal angive om du er ryger!'
    intError = 1; 
    thisform.sluttidspunkt[0].focus();
    }

    if((!thisform.hovedfag[0].checked) || (thisform.hovedfag[1].checked) || (thisform.hovedfag[2].checked) || (thisform.hovedfag[3].checked)|| (thisform.hovedfag[4].checked)) 
    {       
    strErr = strErr + '- Du skal angive hovedfag!'
    intError = 1;
    thisform.hovedfag[0].focus();
    }

    if((thisform.nyhedsbrev.checked==true)) 
    {       
        if((thisform.email.value=='')) 
        {       
        strErr = strErr +'- Du har tilmeldt dig nyhedsbrevet. Derfor skal du udfylde feltet med din e-mail-adresse!'
        intError = 1;
        thisform.email.focus();
        }   
    }

    if (intError == 1)
    {
    alert(strError)
    return false;
    }
}
//-->
</script>

kaldes med return Checkform(this) fra en formular!

ses på www.vih.dk/tilmelding.asp
Avatar billede lsolesen Nybegynder
12. september 2002 - 09:35 #1
Og det må da kunne laves kortere eller hvad, fx når man kun skal tjekke om alle felterne er udfyldt!
Avatar billede phineas_phreak Nybegynder
12. september 2002 - 09:52 #2
der er kommet en { for meget ind !

bemærk koden lige et dit loop :

for (i = 0;  i < checkStr.length;  i++)
      {
        ch = checkStr.charAt(i);
        for (j = 0;  j < checkOK.length;  j++)
              if (ch == checkOK.charAt(j))
              {
            break;
                if (j == checkOK.length)
                {
                allValid = false;
                break;
                }
            allNum += ch;
            }
        }
        if (!allValid)
          {
        strError = strError + 'Skriv venligst kun tal i feltet \"Postnr\" field.'
          intError = 1;
        thisform.fldAreaCode.focus();
          }
    }

med det sidste } lukker du hele funktionen ved en fejl. Fjern det !

så kører lortet. Derfor du får fejlmeddelsen return false uden for funktionen
Avatar billede phineas_phreak Nybegynder
12. september 2002 - 09:55 #3
og ja ... det kan sagtens laves kortere.
Avatar billede lsolesen Nybegynder
12. september 2002 - 09:58 #4
Kan du give mig et lille fif til at forkorte det?
Avatar billede phineas_phreak Nybegynder
12. september 2002 - 10:02 #5
nu ved jeg godt det ik er skræddersyet til dit formål. Men en en MEGET simpel formvalidering kunne f.eks. laves sådan:

<script>
function validate(theForm){
    if (theForm.name.value == "" || theForm.name.value.length < 2){
        alert("skriv venligst dit navn");
        theForm.name.focus();
        return false;
    }
    if (theForm.email.value == "" || theForm.email.value.indexOf('@',1)== -1 || theForm.email.value.indexOf('.',2)==-1){
        alert("husk din email adresse");
        theForm.email.focus();
        return false;
    }
    if (theForm.recipient.value == "" || theForm.recipient.value.indexOf('@',1)== -1 || theForm.recipient.value.indexOf('.',2)==-1){
        alert("skriv den email adresse du vil sende mail til");
        theForm.recipient.focus();
        return false;
    }
    if (theForm.comments.value == "" || theForm.comments.value.length < 2){
        alert("skriv venligst den besked");
        theForm.comments.focus();
        return false;
    }

return true;
}
</script>
Avatar billede phineas_phreak Nybegynder
12. september 2002 - 10:08 #6
sry ... det jeg pastede tidligere var ik helt korrekt.

men ...

loop nr. 2 glemmer du begyndelses { men afslutter det korrekt.

altså :

for (j = 0;  j < checkOK.length;  j++)
              if (ch == checkOK.charAt(j))
              {
           
skal selvfølgelig rettes til :

for (j = 0;  j < checkOK.length;  j++)
{              if (ch == checkOK.charAt(j))
              {

osv.
Avatar billede lsolesen Nybegynder
27. juni 2003 - 10:00 #7
Lukker. Har selv fundet ud af det på www.vih.dk under tilmelding til kurser.
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