webForumDet fria alternativet

Javascript o frames, får det inte att funka i NN

1 svar · 172 visningar · startad av GrodanBoll

GrodanBollMedlem sedan sep. 2001788 inlägg
#1

Hej hej

Jag har en sida som ligger i en massa frames, på denna sida ska jag anropa en javascriptfunktion (i ett formulär):

<input type="text" name="nyhetBliKvarTom" size="55" maxlength="8" class="notistext" value="" onBlur="chkDate('formAdmSidaNyhetRed.nyhetBliKvarTom')">

Koden för för detta javascript ser ut så här:

/////
// kollar datum, om fältet är siffor och om datumet är större än dagens datum YYYYMMDD
// indata är 'formulärnamn.fältnamn'
/////
function chkDate (falt)
{
	var faltvarde = eval ("document." + falt + ".value"); // här kollar jag vilket värde som fältet har
	
	faltvarde = Trim(faltvarde);
	
	if (isInteger (faltvarde) && faltvarde.length == 8) // kollar om det inmatade värdet är 8 st siffror
	{
		// dela upp värdet så att jag kan kolla månad och dag
		var faltvardeAr = faltvarde.substring(0,4); // YYYY
		var faltvardeManad = faltvarde.substring(4,6); // MM
		var faltvardeDag = faltvarde.substring(6,8); // DD
		
		var err = "ingetfel";
		
		// kollar så att man inte skriver in en fel månad
		if ((faltvardeManad < 1) || (faltvardeManad > 12))
		{
			err = "Månaden är felaktig";
		}
		else
		{
			// hålla koll på skott-år
			if ((faltvardeAr % 4 == 0) || (faltvardeAr % 100 == 0) || (faltvardeAr % 400 == 0))
			{
				var skottar = 1;
			}
			
			// kollar så att man inte skriver in fel dag
			if (faltvardeDag < 1)
			{
				err = "Månaden kan inte ha mindre än en dag";
			}
			// februari koll om det är skott-år
			if ((faltvardeManad == 2) && (skottar == 1) && (faltvardeDag > 29))
			{
				err = "Det är skottår, d.v.s månaden har inte mer än 29 dagar";
			} 
			// februari koll om det INTE är skott-år
			if ((faltvardeManad == 2) && (skottar != 1) && (faltvardeDag > 28))
			{
				err = "Det är inte skott år, d.v.s. månaden kan inte ha mer än 28 dagar";
			}
			// kollar de andra månaderna (31-dagars månaderna)
			if ((faltvardeDag > 31) && ((faltvardeManad == "01") || (faltvardeManad == "03") || (faltvardeManad == "05") || (faltvardeManad == "07") || (faltvardeManad == "08") || (faltvardeManad == "10") || (faltvardeManad == "12")))
			{
				err = "Månaden har inte mer än 31 dagar";
			}
			// kollar de andra månaderna (30-dagars månaderna)
			if ((faltvardeDag > 30) && ((faltvardeManad == "04") || (faltvardeManad == "06") || (faltvardeManad == "09") || (faltvardeManad == "11")))
			{
				err = "Månaden har inte mer än 30 dagar";
			}
		}
		
		// har där kommit ett felmeddelande?
		if (err != "ingetfel")
		{
			alert (err);
			eval ("document." + falt + ".select()"); // makerar allt i rutan
			eval ("document." + falt + ".focus()"); // sätter focus i rutan igen			
		}
		else
		{		
			datum = new Date();
			if ((datum.getMonth()+1) < 10) // om månadsnummret är mindre än -> 10 lägg till en nolla
			{
				var manaden = "0" + (datum.getMonth()+1);
			}
			else	
			{
				var manaden = "" + (datum.getMonth()+1);
			}
		
			if (datum.getDate() < 10) // om dagsnummret är mindre än -> 10 lägg till en nolla
			{
				var dagen = "0" + datum.getDate();
			}
			else
			{
				var dagen = "" + datum.getDate();
			}
			
			var dagensdatum = "" + datum.getFullYear() + manaden + dagen;
			
			if (dagensdatum > faltvarde)
			{
				alert("Du måste ange ett datum som ligger i framtiden.");
				eval ("document." + falt + ".select()"); // makerar allt i rutan
				eval ("document." + falt + ".focus()"); // sätter focus i rutan igen
			}
		}
	}	
	else
	{
		if (!isBlank (faltvarde)) // om det inte är 8 siffror ska den även göra en koll om fältet är tomt
		{
			alert ("Formatet du ska mata in är:\nYYYYMMDD\nD.v.s. åtta siffror.\nAlternativt matar du inte in något alls.");
			eval ("document." + falt + ".select()"); // makerar allt i rutan
			eval ("document." + falt + ".focus()"); // sätter focus i rutan igen
		}
	}
}

Tog med hela scriptet men det e bara en grej som strular.
Det är när jag ska hänvisa till fältet t.e.x eval ("document." + falt + ".select()");. Det e alltså 'document'-delen som inte funkar i NN, jag har även testat med 'this'. Det funkar kanon i IE.

Vad ska jag skriva istället för 'document' för att det ska funka?
Som sagt så ligger denna sidan i en bit ner i frames.

Ska kanske lägga till att scriptet funkar bra även i NN när sidan inte ligger i frames.

Bugar och tackar i förhand? :D

/Grodan

GrodanBollMedlem sedan sep. 2001788 inlägg
#2

Fan NN verkar inte ens hitta scriptet :(
Jag testade att lägga en 'alert' i början av scriptet men det hände inget :(

Vad gör jag för grundfel?

Snälla hjälp mig... pretty pretty please...

/Grodan :)

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