---
title: "Javascript o frames, får det inte att funka i NN"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/41934-javascript-o-frames-får-det-inte-att-funka-i-nn"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "GrodanBoll"
published: "2002-04-18T07:19:49.000Z"
updated: "2002-04-18T07:42:16.000Z"
replies: 1
views: 175
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/41934-javascript-o-frames-får-det-inte-att-funka-i-nn"
---

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

## #1 — GrodanBoll, 2002-04-18T07:19Z

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

Permalänk: https://www.webforum.nu/p/41934

## #2 — GrodanBoll, 2002-04-18T07:42Z

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 :)

Permalänk: https://www.webforum.nu/p/648459

---

Tråden på webben: https://www.webforum.nu/amne/javascript/41934-javascript-o-frames-får-det-inte-att-funka-i-nn
