webForumDet fria alternativet
Logga in / Bli medlem

Datum validering

JavaScript

2 svar · 304 visningar · startad av mikab

Medlem sedan sep. 20022 inlägg
Trådstart#1

Hej,
Jag har följande kod som validerar datumfält i ett formulär:

function checkDate(input){

	var pattern = /^(\d{4})-(\d{2})-(\d{2})$/;

	if(!pattern.test(input))
		return false;

	var year = parseInt(RegExp.$1),
	month = parseInt(RegExp.$2) - 1,
	date = parseInt(RegExp.$3);

	var toCheck = new Date();
	toCheck.setFullYear(year);
	toCheck.setMonth(month);
	toCheck.setDate(date);

	return toCheck.getFullYear() == year && toCheck.getMonth() == month && toCheck.getDate() == date;

}

Den fungerar förträffligt utom på en punkt den tillåter INTE dag 08 eller 09. År, månad och andra dagar går bra!
Varför är det på detta sättet?

Tacksam för hjälp
mikab

Medlem sedan nov. 20017 144 inlägg
#2

Välkommen till WF!

Här har du ett indentiskt inlägg.
http://www.webforum.nu/showthread.php?s=&postid=658992#post658992 ;)

Medlem sedan sep. 20022 inlägg
#3

Tack för svaret!

Efter lite testande blev koden:

function checkDate(input){

	var pattern = /^(\d{4})-(\d{2})-(\d{2})$/;

	if(!pattern.test(input))
		return false;

	return (RegExp.$3<=new Date(RegExp.$1,RegExp.$2,0).getDate()&&RegExp.$3>0&&RegExp.$2<13&&RegExp.$2>0);

}

/mikab

261 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)