webForumDet fria alternativet
Logga in / Bli medlem

Validera variabelt antal datumfält

JavaScript

2 svar · 263 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Trådstart#1

Hej! :e
Jag har följande kod för att validera ett datumfält:

<script LANGUAGE="javascript">
<!-- 
function validateDate(datum)
{

var ar        = datum.substr(0,4);
var manad     = datum.substr(5,2);
var dag       = datum.substr(8,2);
var nyttDatum = new Date(ar,manad-1,dag);

var msg = "Kontrollera Datumet! Det ska vara i formatet: ÅÅÅÅ-MM-DD."

if(
 datum.length>10              ||
 datum.charAt(4)!="-"         ||
 datum.charAt(7)!="-"         ||
 nyttDatum.getFullYear()!=ar   ||
 nyttDatum.getMonth()+1!=manad ||
 nyttDatum.getDate()!=dag
 ){alert(msg); return false;}
 
return true; 
} 
//--> 
</script> 
...
...
onsubmit="return validateDate(this.datefield.value);"

Funkar finfint på formulär där fälten alltd har samma namn.

Nu har jag skapat ett formulär där man kan välja antalet poster man vill registrera med en listmeny. Varje post har ett datumfält. Datumfältet för varje post heter; datum1, datum2, datum3 osv beroende på hur många poster man valt.

Hur gör jag för att validera dessa datumfält?

Mvh
Henrik

Medlem sedan juni 200032 967 inlägg
#2

Lite klipp- och klistraövning gav:

<script type="text/javascript">
function check(theForm) {
	elements = theForm.elements;
	for(i=0; i<elements.length; i++){
		if(elements[i].id.substring(0,5) =="datum"){
			if (!validateDate(elements[i].value, elements[i].id))
				return false;
		}
	}
	return true;
}

function validateDate(datum, dateid) {
	var ar        = datum.substr(0,4);
	var manad     = datum.substr(5,2);
	var dag       = datum.substr(8,2);
	var nyttDatum = new Date(ar,manad-1,dag);

	var msg = "Kontrollera Datumet i fältet " + dateid + "! Det ska vara i formatet: ÅÅÅÅ-MM-DD."

	if(
		datum.length>10              ||
		datum.charAt(4)!="-"         ||
		datum.charAt(7)!="-"         ||
		nyttDatum.getFullYear()!=ar   ||
		nyttDatum.getMonth()+1!=manad ||
		nyttDatum.getDate()!=dag
	) {
		alert(msg); 
		return false;
	}
	return true; 
}
</script>

...

onsubmit="return check(this);"

Jag petade lite i indenteringarna, i värsta fall får du peta tillbaka. ;)

mvh

Medlem sedan jan. 20013 582 inlägg
#3

:e
Funkar finfint!

Tack för det!!!

Mvh
Henrik

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