webForumDet fria alternativet

Validera variabelt antal datumfält

2 svar · 263 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#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

@ndersMedlem sedan juni 200032 969 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

devotionMedlem sedan jan. 20013 582 inlägg
#3

:e
Funkar finfint!

Tack för det!!!

Mvh
Henrik

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)