---
title: "Kontrollera att en input form verkligen innehåller ett datum."
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/66695-kontrollera-att-en-input-form-verkligen-innehåller-ett-datum"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "mattiasnordin"
published: "2003-01-31T10:21:53.000Z"
updated: "2003-02-04T08:23:20.000Z"
replies: 4
views: 255
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/66695-kontrollera-att-en-input-form-verkligen-innehåller-ett-datum"
---

# Kontrollera att en input form verkligen innehåller ett datum.

## #1 — mattiasnordin, 2003-01-31T10:21Z

```
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
   får användas fritt så länge som dessa rader står kvar. */

function jxValidateDate(date){
	var year = date.substring(0,4);
	var month = date.substring(5,7);
	var day = date.substring(8,10);
	if (jxTimeValidateDec(year) && jxTimeValidateDec(month) && jxTimeValidateDec(day) && date.length == 10) {
		var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		if (parseInt(year/4)*4 == year) { months[1] = 29 }
		if (parseInt(year/100)*100 == year) { months[1] = 28 }
		if (parseInt(year/400)*400 == year) { months[1] = 29 }
		if (jxTimeCheckInterval(month, 1, 12) && jxTimeCheckInterval(day, 1, months[parseInt(month)-1]) && date.substring(4,5) == "-" && date.substring(7,8) == "-"){
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}
```

Hur testar jag att ett fält verkligen innehåller ett datum. Försöker använda mig av kombinationen av skriptet ovan och JoJoxxx validateForm funktion nedan:

```
function validateForm(){
	if (document.Updateform1.FormDatum.value=="") {
		alert("You must enter a DATE.");
		return false;
	} else if ((jxValidateDate(document.Updateform1.FormDatum.value) = true)){
		alert("Jippie")
		return false;
	} else if (document.Updateform1.FormKontor.value=="") {
		alert("You must enter a OFFICE.");
		return false;
	} else if (document.Updateform1.FormRubrik.value=="") {
		alert("You must enter a HEADLINE.");
		return false;
	} else if (document.Updateform1.FormAuthor.value=="") {
		alert("You must enter a AUTHOR.");
		return false;
	} else {
		alert("Submit is OK!");
		return true;
	}
}
```

Den sista funktionen smäller. Misstänker att man inte får skriva så här: ((jxValidateDate(document.Updateform1.FormDatum.value) = true)){

Hilfe!?  :stud

Permalänk: https://www.webforum.nu/p/66695

## #2 — Jojoxx, 2003-01-31T16:33Z

Du är helt på rätt väg. Funktionen returnerar true/false beroende på om datumet är rätt eller inte. Du behöver alltså inte göra ytterligare en jämförelse hurvida det är sant eller inte (jämförelse definieras f.ö. med == medans tilldelning definieras med =) :)

Sedan slänger vi in ett logiskt "icke" (!) eftersom du kollar om datumet INTE är rätt.

```
} else if (!jxValidateDate(document.Updateform1.FormDatum.value)){
```

Permalänk: https://www.webforum.nu/p/934780

## #3 — mattiasnordin, 2003-02-03T08:44Z

```
<script type="text/javascript">
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
   får användas fritt så länge som dessa rader står kvar. */

function jxValidateDate(date){
	var year = date.substring(0,4);
	var month = date.substring(5,7);
	var day = date.substring(8,10);
	if (jxTimeValidateDec(year) && jxTimeValidateDec(month) && jxTimeValidateDec(day) && date.length == 10) {
		var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		if (parseInt(year/4)*4 == year) { months[1] = 29 }
		if (parseInt(year/100)*100 == year) { months[1] = 28 }
		if (parseInt(year/400)*400 == year) { months[1] = 29 }
		if (jxTimeCheckInterval(month, 1, 12) && jxTimeCheckInterval(day, 1, months[parseInt(month)-1]) && date.substring(4,5) == "-" && date.substring(7,8) == "-"){
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

function validateForm(){
	if (document.Updateform1.FormDatum.value=="") {
		alert("You must enter a DATE.");
		return false;
	} else if (!jxValidateDate(document.Updateform1.FormDatum.value)){
		alert ("NOT a valid date. Use YYYY-MM-DD.")
	} else if (document.Updateform1.FormKontor.value=="") {
		alert("You must enter a OFFICE.");
		return false;
	} else if (document.Updateform1.FormRubrik.value=="") {
		alert("You must enter a HEADLINE.");
		return false;
	} else if (document.Updateform1.FormAuthor.value=="") {
		alert("You must enter a AUTHOR.");
		return false;
	} else {
		alert("THANK YOU\nSubmit is OK!");
		return true;
	}
}
```

När jag kör ovan så smäller det på 	**if (jxTimeValidateDec(year) && jxTimeValidateDec(month) && jxTimeValidateDec(day) && date.length == 10) {**

Ska inte datumet vara formaterat "2003-02-03" ?

 :r  :r

Permalänk: https://www.webforum.nu/p/936690

## #4 — Jojoxx, 2003-02-03T20:21Z

Ursäkta, jag tittade inte så noga på det första inlägget. Funktioner kommer från ett gammalt biblitoket och det saknar en annan funktion från samma bibliotek. Ta denna funktion istället;

```
function jxValidateDate(str){
	if(str.length!=10||str.lastIndexOf('-')!=7||str.indexOf('-')!=4){return false;}
	var a=new Array(); a=str.split(/-/); var months=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	for(var n=0;n<a.length;n++){for(var nn=0;nn<a[n].length;nn++){if("0123456789".indexOf(a[n].substring(nn,nn+1))<0){return false;}}}
	if(parseInt(a[0])%4==0&&parseInt(a[0])%100!=0||parseInt(a[0])%400==0){months[1]=29;}
	if(parseInt(a[1])>12||parseInt(a[1])==0||parseInt(a[2])>months[parseInt(a[1])-1]||parseInt(a[2])==0){return false;}
	return true;
}
```

Permalänk: https://www.webforum.nu/p/937334

## #5 — mattiasnordin, 2003-02-04T08:23Z

Tack jojoxx nu fungerar det precis som jag vill ha det.

Permalänk: https://www.webforum.nu/p/937531

---

Tråden på webben: https://www.webforum.nu/amne/javascript/66695-kontrollera-att-en-input-form-verkligen-innehåller-ett-datum
