Archief - javascript: fout?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

[DZM]TheOne

Legacy Member
een javascript vraagje

Ik roep een functie isDate aan vanuit een html bestand met 2 parameters:

Code:
return checkDates('newstartdatum_','neweinddatum_');

op de lijn die vet staat hieronder krijg ik steeds een fout

Weet er iemand wat er verkeerd is met volgend scriptje?


Code:
function isDate(){
	var x = document.forms[0].elements;
	var returnvalue = true;
	var day, month, year, dateStr, datePat, matchArray;
	for(var i=0; i<arguments.length; i++) {
		alert(arguments[i].length);
		[B]if ((x[arguments[i]+'day'].options[x[arguments[i]+'day'].selectedIndex].value) == '') {[/B]
			day = 1;
		} else {
			day = parseInt(x[arguments[i]+'day'].options[x[arguments[i]+'day'].selectedIndex].value); // get day from select tag
		}
		if ((x[arguments[i]+'month'].options[x[arguments[i]+'month'].selectedIndex].value) == '') {
			month = 1;
		} else {
			month = parseInt(x[arguments[i]+'month'].options[x[arguments[i]+'month'].selectedIndex].value); // get month from select tag	
		}
		year = parseInt(x[arguments[i]+'year'].options[x[arguments[i]+'year'].selectedIndex].value); // get year from select tag
		dateStr = day + '/' + month + '/' + year
		datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
		matchArray = dateStr.match(datePat); // is format OK?
		if (matchArray == null) {
			returnvalue = false;
		}
		// parse date into variables
		day = matchArray[1];
		month = matchArray[3];
		year = matchArray[5];
		if (month < 1 || month > 12) { // check month range
			returnvalue = false;
		}
		if (day < 1 || day > 31) {
			returnvalue = false;
		}
		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			returnvalue = false;
		}
		if (month == 2) { // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day > 29 || (day==29 && !isleap)) {
				returnvalue = false;
			}
		}
	}
	return returnvalue;  // date is valid		
}

Smoerf

Legacy Member
Ik denk niet dat dit "arguments+'day'" met name die plus als index in een array aanvaard wordt.

Mss eens een var aanmaken
var bla = arguments + 'day';
x[bla]

zoiets denkek, ma keb het nie getest

Smoerf

Legacy Member
En als je dat met een alert laat weergeven die "x[arguments+'day'].options[x[arguments+'day'].selectedIndex].value", wat krijg je dan?

[DZM]TheOne

Legacy Member
Ik heb telkens een fout als deze:

x[arguments + "day"] has no properties


even relevante html-source posten: (het gaat om enkele select-tags)

Code:
<form id="frmC" name="frmC" action="test.asp" method="post" onSubmit="return isDate('newstartdatum_','neweinddatum_');">
<select name="newstartdatum_day" id="newstartdatum_day">		
	<option value="1">1</option>		
	<option value="2">2</option>		
	<option value="3">3</option>		
	...
	<option value="31">31</option>
</select>
<select name="newstartdatum_month" id="newstartdatum_month">
	<option value="1">1</option>
	<option value="2">2</option>
	...
	<option value="12">12</option>
</select>
<select name="newstartdatum_year" id="newstartdatum_year">
	<option value="2003">2003</option>
	...		
	<option value="2007">2007</option>
</select>
<select name="neweinddatum_day" id="neweinddatum_day">		
	<option value="1">1</option>		
	<option value="2">2</option>		
	<option value="3">3</option>		
	...
	<option value="31">31</option>
</select>
<select name="neweinddatum_month" id="neweinddatum_month">
	<option value="1">1</option>
	<option value="2">2</option>
	...
	<option value="12">12</option>
</select>
<select name="neweinddatum_year" id="neweinddatum_year">
	<option value="2003">2003</option>
	...		
	<option value="2007">2007</option>
</select>
</form>

indien ik de functie gebruik bij een gelijkaardige pagina met maar 1 parameter lukt het wel (bvb onSubmit="return isDate('newstartdatum_');")

[DZM]TheOne

Legacy Member
eindelijk gevonden

probleem lag bij document.forms[0].elements


ik gebruik nl meerdere forms in 1 pagina

tnx om te helpen zoeken, smoerf
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan