Avatar billede rille101 Nybegynder
16. januar 2006 - 13:50 Der er 5 kommentarer

Validering af form med tekstfelt, dato og tidspunkt.

Hej, jeg har en form, som jeg gerne vil have lidt validering på.
De felter der skal valideres er Titel, FraDato, TilDato, Starttidspunkt.

Jeg har allerede fået valideringen af Titel til at virke.
(koder følger)

Jeg vil nu gerne have at datofelterne sikres således at datoerne står som "dd-mm-åååå"
(bemærk at der er knyttet et kalenderscript til disse to, ved ikke om det får nogen indflydelse)

Starttidspunkt skal gerne sikres, så der står "tt:mm" (eller "tt.mm")

Her er mit script som jeg har fundet her på eksperten, og i hvilket, resten gerne skulle indskrives i:

<script language="javascript" type="text/javascript">
function checkform(f){
    fail = false;
    message = "";
    s = document.getElementById('failures');
    s.style.visibility="hidden";

    if(f.titel.value==""){
        if(!fail)f.titel.focus();
        fail=true;
        message += "Du skal angive en titel for begivenheden.<br>"
    }

   
    if(fail){
        s = document.getElementById('failures');
        s.style.visibility="visible";
        s.innerHTML=message;
        alert('Der er registreret fejl');
        return false;
    }
    return false;
}
</script>



Her er formen:



<form action="CMS-ny-aktivitet2.asp" Method="post" name="form1" onsubmit="return checkform(this);">

  <table align="center">
                <tr valign="top">
                  <td width="161" height="30" align="right" valign="middle" nowrap>Begivenhed:</td>
                  <td width="292" height="30" valign="middle">
                 
                  <span id="failures" style="visibility:hidden;color:red;font-weight:bold;"></span>
                 
                  <input type="text" name="titel" <%if data then response.write(" Value=""" & request.querystring("titel") & """") else %>value="" size="32">
                  </td>
                </tr>
                <tr valign="top">
                  <td height="30" align="right" nowrap>Generel info om aktiviteten:</td>
                  <td height="30"><textarea name="indhold" cols="40" rows="5"><%if data then%><%=request.querystring("indhold")%><%end if%></textarea>
                  </td>
                </tr>
                <tr valign="top">
                  <td height="30" align="right" valign="middle" nowrap>Arrangementet starter:</td>
                  <td height="30" valign="top">D.
                    <input name="FraDato" class="inputdato" id="FraDato" onblur="FraToTil();" value="dd-mm-åååå" size="10" <%if data then response.write(" value=""" & request.querystring("FraDato") & """") else %>value="<%=StrFraDato%>">
                    <%=DatoSelect("FraDato","FraDato","TilDato")%>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kl:
<input name="tidspunkt" type="text" id="tidspunkt" <%if data then response.write(" Value=""" & request.querystring("tidspunkt") & """") else %>value="" size="5" maxlength="5">
(tt:mm)</td>
                </tr>
                <tr valign="top">
                  <td height="30" align="right" valign="middle" nowrap>Arrangementet slutter:</td>
                  <td height="30" valign="top">D.                   
                    <input name="TilDato" class="inputdato" id="TilDato" value="dd-mm-åååå" size="10" <%if data then response.write(" value=""" & request.querystring("TilDato") & """") else %>value="<%=StrTilDato%>">
                    <%=DatoSelect("TilDato","FraDato","TilDato")%>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kl:
                    <input name="sluttidspunkt" type="text" id="sluttidspunkt" <%if data then response.write(" Value=""" & request.querystring("sluttidspunkt") & """") else %>value="" size="5" maxlength="5">
                    (tt:mm)</td>
                </tr>
                <tr valign="top">
                  <td height="30" align="right" valign="middle" nowrap>Evt. link til hjemmeside: </td>
                  <td height="30" valign="middle"><input name="hjemmeside" <%if data then response.write(" Value=""" & request.querystring("hjemmeside") & """") else %>value="" type="text" id="hjemmeside">
                    www.eksempel.dk </td>
                </tr>
                <tr valign="top">
                  <td height="30" align="right" valign="middle" nowrap>Kontaktperson:</td>
                  <td height="30" valign="middle"><input type="text" name="kontaktperson" <%if data then response.write(" Value=""" & request.querystring("kontaktperson") & """") else %>value="" size="20">
                  </td>
                </tr>
                <tr valign="top">
                  <td height="30" align="right" valign="middle" nowrap>Evt. Telefon:</td>
                  <td height="30" valign="middle"><input name="telefon" type="text" <%if data then response.write(" Value=""" & request.querystring("telefon") & """") else %>value="" size="10" maxlength="10">
                  </td>
                </tr>
                <tr valign="top">
                  <td height="30" align="right" valign="middle" nowrap>Evt. E-mail:</td>
                  <td height="30" valign="middle"><input name="email" type="text" id="email" <%if data then response.write(" Value=""" & request.querystring("email") & """") else %>value=""></td>
                </tr>
                <tr valign="middle">
                  <td height="30" align="right" nowrap><div align="left"></div></td>
                  <td height="30"><input type="submit" value="Indsæt i aktivitetskalender">                    <div align="right"></div></td>
                  </tr>
              </table>
             
                  </form>
Avatar billede roenving Novice
16. januar 2006 - 16:04 #1
function checkform(f){
    fail = false;
    message = "";
    s = document.getElementById('failures');
    s.style.visibility="hidden";

    if(f.titel.value==""){
        if(!fail)f.titel.focus();
        fail=true;
        message += "Du skal angive en titel for begivenheden.<br>"
    }
  if(!f.FraDato.value.match(/^\d\d\-\d\d\-\d{4}$/)){
    if(!fail)f.FraDato.focus();
        fail=true;
        message += "Du skal angive Fra-datoen i formatet dd-mm-åååå.<br>"
  }
  var d = f.FraDato.value.split("-");
  var oDF = new Date(d[2],d[1]-1,d[0]);
  if(oDF.getFullYear() != d[2] || oDF.getMonth()+1 != d[1] || oDF.getDate() != d[0]){
    if(!fail)f.FraDato.focus();
        fail=true;
        message += "Du skal angive en gyldig Fra-dato.<br>"
  }

  if(!f.TilDato.value.match(/^\d\d\-\d\d\-\d{4}$/)){
    if(!fail)f.TilDato.focus();
        fail=true;
        message += "Du skal angive Til-datoen i formatet dd-mm-åååå.<br>"
  }
  var d = f.ilDato.value.split("-");
  var oDT = new Date(d[2],d[1]-1,d[0]);
  if(oDT.getFullYear() != d[2] || oDT.getMonth()+1 != d[1] || oDT.getDate() != d[0]){
    if(!fail)f.TilDato.focus();
        fail=true;
        message += "Du skal angive en gyldig Til-dato.<br>"
  }
  if(oDF.getTime() > oDT.getTime(){
    if(!fail)f.FraDato.focus();
        fail=true;
        message += "Du skal angive en slut-dato, som ikke er før startdatoen.<br>"
  }
  if(!f.tidspunkt.value.match(/^([01]\d|2[0-3])[:\.][0-5]\d$/)){
    if(!fail)f.tidspunkt.focus();
        fail=true;
        message += "Du skal angive en start-tidspunkt i formatet tt:mm, som er korrekt.<br>"
  }
   
    if(fail){
        s.style.visibility="visible";
        s.innerHTML=message;
        alert('Der er registreret fejl');
        return false;
    }
    return false;
}



function validAge(elm){
  var nu = new Date();
  if(d[2]>nu.getFullYear()-18 || (d[2]==nu.getFullYear()-18 && d[1]-1>nu.getMonth()) || (d[2]==nu.getFullYear()-18 && d[1]-1==nu.getMonth() && d[0]<nu.getDate())){
    alert("Du skal være over 18 år for at deltage i denne konkurrence!");
    location.href = "underAtten.html";
  }
}
Avatar billede roenving Novice
16. januar 2006 - 16:04 #2
Hov, det sidste var noget der slap med fra noget andet !-)
Avatar billede rille101 Nybegynder
16. januar 2006 - 17:14 #3
Hej Roenvig, tak for det hurtige svar!
Scriptet virker desværre ikke helt.
Den melder ingen fejl, men kører bare videre til næste side, hvor jeg så får en Type mismatch fejl.
Jeg har set det lidt igennem, og fandt en lille fejl,

  var d = f.ilDato.value.split("-"); (ilDato = TilDato)

Men det var ikke helt nok. Kan ikke rigtig finde andre fejl, men er jo heller ikke så go ;)

Jeg er forresten også kommet i tanker om noget andet.

I min form har jeg flere submit knapper, da jeg har et par select menuer, hvor man kan tilføje punkter. Jeg har på fornemmeren at valideringsscriptet vil brokke sig, når disse knapper trykkes. Har jeg ret i det? Det drejer sig om disse to "ekstra" submits:
<input type="submit" id="Send" name="Send" value="Nyt Sted >>">
<input type="submit" name="Send" id="Send" value="Ny Arrangør >>">

kan man gøre noget ved det???
Avatar billede roenving Novice
17. januar 2006 - 15:38 #4
-- slutningen skal også returnere true:

...

    if(fail){
        s.style.visibility="visible";
        s.innerHTML=message;
        alert('Der er registreret fejl');
        return false;
    }
    return true;
}

-- og jeg ville selv sætte en værdi et andet sted, hvis jeg havde flere submit-knapper, f.eks. i et hidden field:

<input type="hidden" name="submitType">
<input type="submit" name="Send" id="Send" value="Nyt Sted >>" onclick="this.form.submitType.alue=this.value">
<input type="submit" name="Send1" id="Send1" value="Ny Arrangør >>" onclick="this.form.submitType.alue=this.value">

-- og så aflæse det felt serverside !-)

-- det kunne du også gøre i valideringsscriptet, hvis det har betydning ...
Avatar billede rille101 Nybegynder
24. marts 2011 - 13:46 #5
Det er vist også på tide at lukke dette spørgsmål. Vil du smide et svar?
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