Avatar billede compac Seniormester
07. december 2010 - 14:40 Der er 9 kommentarer og
1 løsning

Validering af formular

Jeg har en formular, som jeg vil have valideret, om den er udfyldt
og om datofelterne kommer i stigende rækkefølge. Indtil videre ser jeg bort fra at validere på formatteringen af selve datoen, men forudsætter: dd-mm-åååå

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function tjek() {
blank();
compareDate();
}
function blank() {
if (document.skriv.fradato.value == ""){
alert ("Du skal udfylde fradato.");
document.skriv.fradato.focus();
return false;
}
else if (document.skriv.sletdato.value == ""){
alert ("Du skal udfylde dato, hvor teksten skal slettes.");
document.skriv.sletdato.focus();
return false;
}
if (document.skriv.text1.value == ""){
alert ("Du skal udfylde tekst1 bemærkninger.");
document.skriv.text1.focus();
return false;
}
if (document.skriv.text2.value == ""){
alert ("Du skal udfylde tekst2 bemærkninger.");
document.skriv.text2.focus();
return false;
}
}
function compareDate()
{
var start = document.skriv.fradato.value;
var end = document.skriv.sletdato.value;
var stDate = new Date(start);
var enDate = new Date(end);
var compDate = enDate - stDate;

if(compDate >= 0)
return true;
else
{
alert("Du skal udfylde korrekt datointerval ");
document.skriv.fradato.focus();
return false;
}
}

</script>
</head>
<body>
<form name="skriv" onSubmit="return tjek(this.form)" action="anerkend.php" method="post">
<input type="text" name="fradato" size="8" maxlength=10><br>
<input type="text" name="sletdato" size="8" maxlength=10><br>
<input type="text" name="text1" size="92"> <br>
<textarea name="text2" rows="10" cols="90">
Avatar billede jakobdo Ekspert
07. december 2010 - 14:55 #1
Hvad er dit spørgsmål ?
Avatar billede majbom Novice
07. december 2010 - 14:58 #2
altså om fradato er før sletdato?
Avatar billede jakobdo Ekspert
07. december 2010 - 15:02 #3
Ved godt det ikke svarer på dit spørgsmål, men måske du kunne bruge noget ala: http://jqueryui.com/demos/datepicker/#event-search
Avatar billede compac Seniormester
07. december 2010 - 15:21 #4
Ja, det var ikke lige til at forstå.
Her er den fulde kode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function tjek() {
blank();
compareDate();
}
function blank() {
if (document.skriv.fradato.value == ""){
alert ("Du skal udfylde fradato.");
document.skriv.fradato.focus();
return false;
}
else if (document.skriv.sletdato.value == ""){
alert ("Du skal udfylde dato, hvor teksten skal slettes.");
document.skriv.sletdato.focus();
return false;
}
if (document.skriv.text1.value == ""){
alert ("Du skal udfylde tekst1 bemærkninger.");
document.skriv.text1.focus();
return false;
}
if (document.skriv.text2.value == ""){
alert ("Du skal udfylde tekst2 bemærkninger.");
document.skriv.text2.focus();
return false;
}
}
function compareDate()
{
var start = document.skriv.fradato.value;
var end = document.skriv.sletdato.value;
var stDate = new Date(start);
var enDate = new Date(end);
var compDate = enDate - stDate;

if(compDate >= 0)
return true;
else
{
alert("Du skal udfylde korrekt datointerval ");
document.skriv.fradato.focus();
return false;
}
}

</script>
</head>
<body>
<form name="skriv" onSubmit="tjek(this.form)" action="anerkend.php" method="post">
<input type="text" name="fradato" size="8" maxlength=10><br>
<input type="text" name="sletdato" size="8" maxlength=10><br>
<input type="text" name="text1" size="92"> <br>
<textarea name="text2" rows="10" cols="90"></textarea><br>
<input type="Submit" name="cmdSubmit" value="OK">
</form>
</body>
</html>


Problemet er at den går videre til næste side inden den har valideret hele formularen.
Avatar billede majbom Novice
07. december 2010 - 16:25 #5
det er lidt mærkeligt det kode du har; du sender formen med i tjek-funktionen, men du bruger den ikke. jeg ville nok rette det til noget i denne stil:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function tjek(form) {
blank(form);
compareDate(form);
}
function blank(form) {
if (form.fradato.value == ""){
alert ("Du skal udfylde fradato.");
form.fradato.focus();
return false;
}
else if (form.sletdato.value == ""){
alert ("Du skal udfylde dato, hvor teksten skal slettes.");
form.sletdato.focus();
return false;
}
if (form.text1.value == ""){
alert ("Du skal udfylde tekst1 bemærkninger.");
form.text1.focus();
return false;
}
if (form.text2.value == ""){
alert ("Du skal udfylde tekst2 bemærkninger.");
form.text2.focus();
return false;
}
}
function compareDate(form)
{
var start = form.fradato.value;
var end = form.sletdato.value;
var stDate = new Date(start);
var enDate = new Date(end);
var compDate = enDate - stDate;

if(compDate >= 0)
return true;
else
{
alert("Du skal udfylde korrekt datointerval ");
form.fradato.focus();
return false;
}
}

</script>
</head>
<body>
<form name="skriv" onSubmit="tjek(this.form)" action="anerkend.php" method="post">
<input type="text" name="fradato" size="8" maxlength=10><br>
<input type="text" name="sletdato" size="8" maxlength=10><br>
<input type="text" name="text1" size="92"> <br>
<textarea name="text2" rows="10" cols="90"></textarea><br>
<input type="Submit" name="cmdSubmit" value="OK">
</form>
</body>
</html>
Avatar billede majbom Novice
07. december 2010 - 16:26 #6
og så bruger du osse date forkert...

prøv at kig her engang: http://www.w3schools.com/js/js_obj_date.asp lidt nede under "Compare Two Dates"
Avatar billede compac Seniormester
07. december 2010 - 16:40 #7
Med din løsning validerer den slet ikke, men går straks videre til næste side - uanset om felterne er udfyldt.
Avatar billede majbom Novice
07. december 2010 - 19:18 #8
nej der var lige lidt mangler:
du skal have return foran functionskaldet i onsubmit og der skal kun stå this som argument og ikke this.form

desuden skal du have en return false i bunden af din tjek-funktion
Avatar billede compac Seniormester
07. december 2010 - 22:45 #9
Kan stadig ikke få det til at køre.
Jeg fandt imidlertid denne side, som kan bruges på en masse situationer ved validering.

http://www.novil.dk/sider/scripts/javascripts/formular/validering.html
Avatar billede majbom Novice
07. december 2010 - 22:54 #10
det virker fint hos mig efter rettelserne...
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