/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Checkform
Fra : Claus Skaarup \(Arbe~


Dato : 23-04-07 11:04

Jeg kan ikke få min checkform til at virke.

Kode:

<script language='javascript' type="text/javascript">

function Validate() {
// Check for Empty fields
if (document.Bestilling.navn.value == "Navn") ||
(document.Bestilling.navn.value == "") {
alert ("Du skal skrive dit navn");
return false;
}

// Check telefon

if (document.Bestilling.telefon.value == "Telefon") ||
(document.Bestilling.telefon.value == "")

{
alert ("Du skal skrive dit telefonnummer");
return false;
}

}
</script>

og:

<form
action="http://www.limfjordsteatret.dk/admin/index.asp?index=bestilbekraeft"
method="post" name="Bestilling" id="Bestilling" onsubmit="return
Validate();">

Der bliver ikke valideret noget som helst. Selv om der intet står i de to
felter "telefon" og "navn", kommer der ikke nogen alert.

WHY???


Mvh Claus



 
 
Birger Sørensen (23-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 23-04-07 13:03

Claus Skaarup \(Arbejde\) wrote in dk.edb.internet.webdesign.clientside:
> Jeg kan ikke få min checkform til at virke.
>
> Kode:
>
> <script language='javascript' type="text/javascript">
>
> function Validate() {
> // Check for Empty fields
> if (document.Bestilling.navn.value == "Navn")
> (document.Bestilling.navn.value == "") {
> alert ("Du skal skrive dit navn");
> return false;
> }
>
> // Check telefon
>
> if (document.Bestilling.telefon.value == "Telefon")
> (document.Bestilling.telefon.value == "")
>
> {
> alert ("Du skal skrive dit telefonnummer");
> return false;
> }
>
> }
> </script>
>
> og:
>
> <form
> action="http://www.limfjordsteatret.dk/admin/index.asp?index=bestilbekraeft"
> method="post" name="Bestilling" id="Bestilling" onsubmit="return
> Validate();">
>
> Der bliver ikke valideret noget som helst. Selv om der intet står i de to
> felter "telefon" og "navn", kommer der ikke nogen alert.
>
> WHY???
>
>
> Mvh Claus


du skal bruge document.all.Bestilling eller blot Bestilling i både IE og Opera.

Hvis du bruger FF, er det anderledes. Den kender ikke HTML elementer, selv om de
gives et id.
Best = document.getElementById( 'Bestilling');
returnerer HTML elementet i IE, Opera og FF, så selv om det er mere indviklet og
mindre overskueligt, er det en metode der kan bruges...

function Validate() { // Check for Empty fields
   var BestNavn = document.getElementById( 'navn');
   var BestTlf = document.getElementById( 'telefon');
   var res = true;
   if (( BestNavn.value == "Navn") || ( BestNavn.value == "")) { // check navn
      alert ("Du skal skrive dit navn");
      BestNavn.focus();
    res = false;
    }
   else if (( BestTlf.value == "Telefon") || ( BestTlf.value == "")) { // Check
telefon
      alert ("Du skal skrive dit telefonnummer");
      BestTlf.focus();
      res = false;
      }
   return res;
   }


Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Claus Skaarup \(Arbe~ (23-04-2007)
Kommentar
Fra : Claus Skaarup \(Arbe~


Dato : 23-04-07 14:37


"Birger Sørensen"
>
>
> du skal bruge document.all.Bestilling eller blot Bestilling i både IE og
> Opera.
>
> Hvis du bruger FF, er det anderledes. Den kender ikke HTML elementer, selv
> om de
> gives et id.
> Best = document.getElementById( 'Bestilling');
> returnerer HTML elementet i IE, Opera og FF, så selv om det er mere
> indviklet og
> mindre overskueligt, er det en metode der kan bruges...
>
> function Validate() { // Check for Empty fields
> var BestNavn = document.getElementById( 'navn');
> var BestTlf = document.getElementById( 'telefon');
> var res = true;
> if (( BestNavn.value == "Navn") || ( BestNavn.value == "")) { // check
> navn
> alert ("Du skal skrive dit navn");
> BestNavn.focus();
> res = false;
> }
> else if (( BestTlf.value == "Telefon") || ( BestTlf.value == "")) { //
> Check
> telefon
> alert ("Du skal skrive dit telefonnummer");
> BestTlf.focus();
> res = false;
> }
> return res;
> }
>
>
> Birger
>
Mange tak. Jeg kigger på det.

Mvh. Claus



Birger Sørensen (23-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 23-04-07 14:45

Claus Skaarup \(Arbejde\) wrote in dk.edb.internet.webdesign.clientside:
> "Birger Sørensen"
> >
> >
> > du skal bruge document.all.Bestilling eller blot Bestilling i både IE og
> > Opera.
> >
> > Hvis du bruger FF, er det anderledes. Den kender ikke HTML elementer, selv
> > om de
> > gives et id.
> > Best = document.getElementById( 'Bestilling');
> > returnerer HTML elementet i IE, Opera og FF, så selv om det er mere
> > indviklet og
> > mindre overskueligt, er det en metode der kan bruges...
> >
> > function Validate() { // Check for Empty fields
> > var BestNavn = document.getElementById( 'navn');
> > var BestTlf = document.getElementById( 'telefon');
> > var res = true;
> > if (( BestNavn.value == "Navn") ( BestNavn.value == "")) { // check
> > navn
> > alert ("Du skal skrive dit navn");
> > BestNavn.focus();
> > res = false;
> > }
> > else if (( BestTlf.value == "Telefon") ( BestTlf.value == "")) { //
> > Check
> > telefon
> > alert ("Du skal skrive dit telefonnummer");
> > BestTlf.focus();
> > res = false;
> > }
> > return res;
> > }
> >
> >
> > Birger
> >
> Mange tak. Jeg kigger på det.
>
> Mvh. Claus
>
>

Velbekomme. :)
Vær lige opmærksom på, at NG åbenbart fjerner visse tegn.
Der mangler "OR" operator mellem paranteser i if-sætningerne (to lodrette
streger ||).

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (23-04-2007)
Kommentar
Fra : Martin


Dato : 23-04-07 17:15

Birger Sørensen wrote:
> du skal bruge document.all.Bestilling eller blot Bestilling i både IE og Opera.
>
> Hvis du bruger FF, er det anderledes. Den kender ikke HTML elementer, selv om de
> gives et id.
> Best = document.getElementById( 'Bestilling');
> returnerer HTML elementet i IE, Opera og FF, så selv om det er mere indviklet og
> mindre overskueligt, er det en metode der kan bruges...

Gal du brokker dig Birger over Firefox...
Javascript har ændret sig ret meget siden du startede med det for 10 år
siden (så vidt jeg husker er det 10 år siden du startede med javascript)

Jeg arbejede også en smule med da det var document.foo.value tider, men
jeg syns godt nok det er ekstremt nemmere og meget mere logisk med
getElementById, getElementsByTagname osv.

Martin (23-04-2007)
Kommentar
Fra : Martin


Dato : 23-04-07 17:40

Martin wrote:
> Birger Sørensen wrote:
>> du skal bruge document.all.Bestilling eller blot Bestilling i både IE
>> og Opera.
>>
>> Hvis du bruger FF, er det anderledes. Den kender ikke HTML elementer,
>> selv om de
>> gives et id.
>> Best = document.getElementById( 'Bestilling');
>> returnerer HTML elementet i IE, Opera og FF, så selv om det er mere
>> indviklet og
>> mindre overskueligt, er det en metode der kan bruges...
>
> Gal du brokker dig Birger over Firefox...
> Javascript har ændret sig ret meget siden du startede med det for 10 år
> siden (så vidt jeg husker er det 10 år siden du startede med javascript)
>
> Jeg arbejede også en smule med da det var document.foo.value tider, men
> jeg syns godt nok det er ekstremt nemmere og meget mere logisk med
> getElementById, getElementsByTagname osv.

Anyway - så virker document.[form navn].[element navn].value da ganske
udenmærket i firefox 2

Dog kræver det et velformuleret HTML dokument - som validerer

Test selv :)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type='text/javascript'>
function validate() {
if(document.formular.telefon.value=="") {
alert('Ikke korrekt');
return false;
}
}
</script>
</head>
<body>
<form name="formular" action="#" method="post" onsubmit="return
validate();">
<input type="text" name="telefon" value="" />
<input type="submit" name="submit" value="Valider" />
</form>
</body>
</html>

Birger Sørensen (23-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 23-04-07 21:25

Martin wrote in dk.edb.internet.webdesign.clientside:
> Martin wrote:
> > Birger Sørensen wrote:
> >> du skal bruge document.all.Bestilling eller blot Bestilling i både IE
> >> og Opera.
> >>
> >> Hvis du bruger FF, er det anderledes. Den kender ikke HTML elementer,
> >> selv om de
> >> gives et id.
> >> Best = document.getElementById( 'Bestilling');
> >> returnerer HTML elementet i IE, Opera og FF, så selv om det er mere
> >> indviklet og
> >> mindre overskueligt, er det en metode der kan bruges...
> >
> > Gal du brokker dig Birger over Firefox...
> > Javascript har ændret sig ret meget siden du startede med det for 10 år
> > siden (så vidt jeg husker er det 10 år siden du startede med javascript)
> >
> > Jeg arbejede også en smule med da det var document.foo.value tider, men
> > jeg syns godt nok det er ekstremt nemmere og meget mere logisk med
> > getElementById, getElementsByTagname osv.
>
> Anyway - så virker document.[form navn].[element navn].value da ganske
> udenmærket i firefox 2
>
> Dog kræver det et velformuleret HTML dokument - som validerer
>
> Test selv :)
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
> <html>
> <head>
> <title>Test</title>
> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
> <script type='text/javascript'>
> function validate() {
> if(document.formular.telefon.value=="") {
> alert('Ikke korrekt');
> return false;
> }
> }
> </script>
> </head>
> <body>
> <form name="formular" action="#" method="post" onsubmit="return
> validate();">
> <input type="text" name="telefon" value="" />
> <input type="submit" name="submit" value="Valider" />
> </form>
> </body>
> </html>


Martin.
Jeg startede midt i '80'erne engang, så 10 år ka' vist ikke gøre det... ;>)
Men jeg har da gjort lidt for at følge med, og lære nyt og mere...

Kompatibilitet... ?

Anyway...
Jeg tror ikke at document.[form navn].... går i IE.
Der skal enten .all eller .forms imellem.

Pointen er, at "i gamle dage" - dengang også i Netscape - og stadigvæk i IE
og Opera - var/er elementer der blev givet et eentydigt id (name),
automatisk variable i javascript (og JScript og ecmascript).
Dvs. du kan bare skrive [element navn].value - der er ingen brug for at
hente objectet fra DOM; det findes allerede.

I fremskridtets hellige navn, finder jeg det et klart tilbageskridt, at
nyere standarder begrænser/besværliggør og ikke er kompatible med tidligere
versioner.
Hvorfor skal f.eks. innerText pludselig hedde textContent (som IE i øvrigt
ikke forstår, mens Opera forstår begge..).
Det ka' da' godt være at det er MS der har lanceret den, og man ikke vil
forfordele den ene frem for den anden.
Men innerHTML har man taget som den var. Den burde reelt så hedde
HTMLContent. Det gør den bare ikke - den hedder stadig innerHTML.. Bare for
at gøre forvirringen total..
Eller hva'?
Eller er det bare mig der er ved at blive gammel?

Og sådan er der så meget.
Det her er brok.
Syntes egentlig det andet er mere forklaring af forskellene, end egentlig
brok. :)
Og jeg mener at forklaringen er den væsentligste del af hjælpen her...!

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (23-04-2007)
Kommentar
Fra : Martin


Dato : 23-04-07 23:51

Birger Sørensen wrote:
> Martin.
> Jeg startede midt i '80'erne engang, så 10 år ka' vist ikke gøre det... ;>)
> Men jeg har da gjort lidt for at følge med, og lære nyt og mere...

Der var jeg jo ikke engang født endnu :)
Jeg startede lige da den tid hvor NS4 blev slagtet ret hårdt af denne
nye Internet Explorer - Det er det tidligste jeg kan huske, så hvordan
det var før, der må jeg melde stort pas.

> Anyway...
> Jeg tror ikke at document.[form navn].... går i IE.
> Der skal enten .all eller .forms imellem.

Jeg har desværre kun IE7 på denne maskine, men der virker mit
ovenstående hurtige eksempel ganske udenmærket, så document.[form navn]
virker skam også i IE7 - Jeg tester lige imorgen hvordan IE6 opfører sig.

>
> Pointen er, at "i gamle dage" - dengang også i Netscape - og stadigvæk i IE
> og Opera - var/er elementer der blev givet et eentydigt id (name),
> automatisk variable i javascript (og JScript og ecmascript).
> Dvs. du kan bare skrive [element navn].value - der er ingen brug for at
> hente objectet fra DOM; det findes allerede.

Det er så rigtigt - det ville være nemmere med objectid.value, men når
man heller ikke gør det i fx. XSL (XML stylesheets), XPath eller lign.
XML ting, hvorfor skulle man så gøre det i XHTML, XHTML er jo en
viderebygning på XML.

Men man må jo se når HTML5 (eller hvad den nu kommer til at hedde)
bliver officielt se hvad den bringer.

> I fremskridtets hellige navn, finder jeg det et klart tilbageskridt, at
> nyere standarder begrænser/besværliggør og ikke er kompatible med tidligere
> versioner.

Nu har det ALDRIG været standard i firefox at kunne skrive objekt.value
(svjv) så den er da kompitabel med tidligere versioner.

At så w3.org har lavet en standardisering af hvordan tingene "skal"
skrives, og firefox er en af dem som overholder netop disse standarder,
er vel så bare en god ting. Tænk hvis der ikke var en dokumentation til
PHP eller ASP.net, hvordan skulle man så lave tingene.

Opera overholder så også standarden, men de har så bare medtaget nogle
af de ting som IE har lavet for dem selv, kan jo så både være godt... og
dårligt.

Godt fordi så er det lidt nemmere for udviklerne at springe over hvor
gærdet er lavest - eller hvad man nu kan sige :)

Dårligt, fordi så kan igen, udviklerne springe over gærdet er lavest og
ikke opfylde de standarder der nu engang er.

> Hvorfor skal f.eks. innerText pludselig hedde textContent (som IE i øvrigt
> ikke forstår, mens Opera forstår begge..).

Fordi det er IE der har "opfundet" innerText - w3.org har så lavet
standarden textContent.

For at emulere innerText i firefox kan følgende bruges

//Emulate innerText on Firefox
if (typeof HTMLElement != 'undefined' && typeof
HTMLElement.prototype.__defineGetter__ == 'function'){
HTMLElement.prototype.__defineGetter__("innerText", function () {
return this.textContent;
});
}


> Det ka' da' godt være at det er MS der har lanceret den, og man ikke vil
> forfordele den ene frem for den anden.
> Men innerHTML har man taget som den var. Den burde reelt så hedde
> HTMLContent. Det gør den bare ikke - den hedder stadig innerHTML.. Bare for
> at gøre forvirringen total..
> Eller hva'?

Noget i den stil :)
Jeg læste hvorfor at textContent og innerHTML hedder som de hedder et
eller andet sted på w3.org, men kan ikke hitte den side igen.

> Eller er det bare mig der er ved at blive gammel?

Det tror jeg da ikke - men engang imellem er det sku meget rart lige at
slippe ALT hvad man har lært og ellers lære det forfra

> Og sådan er der så meget.

Nemlig... og det samme "problem" var der også dengang da IE og NS var i
slåskamp om brugerne. Der synes jeg bare at kunne huske at der var LANGT
større problemer end der er idag.

> Det her er brok.
> Syntes egentlig det andet er mere forklaring af forskellene, end egentlig
> brok. :)
> Og jeg mener at forklaringen er den væsentligste del af hjælpen her...!

Forklaringen... tjaa w3.org har lavet en standard af Javascript, det IE
bruger er jo så JScript - måske bedre kendt som ECMAscript, Javascript
og ECMAscript ligner MEGET hinanden, men der er nogle små forskelle, og
det er vel dem vi støder ind i nu.

Opera har bare været så "smarte" at indbygge begge dele - mens Firefox
overholder Javascript standarden, og IE overholder JScript standarden.


Min konklusion... (skrevet af en tilhænger af standarder!)

IE
Brugte i starten deres egen standard, ECMAscript (opfundet i 1996 og
udkommet i 3 versioner, senest 1999) - Senere er de af en eller anden
grund blevet nød til at indbygge noget fra det "rigtige" javascript, som
fx. DOM modellen

Opera
Har sørget for at "gamle" sider også vil virke selvom man har brugt
noget "ældre" ECMAscript, og højst sandsynligt også implementeret det
meste af Javascript.

Firefox
Da Netscape i 1998 indgik en aftale med AOL og SUN (kan ikke lige helt
huske hvordan det var) og Firefox eller rettere Mozilla Foundation er
stiftet af Netscape, så er det jo klart at de har indbygget Javascript i
dens oprindelige standard, da Javascript jo er et trademark fra SUN - og
højst sandsynligt ikke har ville/må indbygge nogle form for ECMAscript
ind i browseren, er det jo klart der vil blive problemer med nogle ting.

Nå.. det blev vidst et lidt langt indlæg denne gang :)
Men bare rolig Birger, jeg er skam ikke imod nogle, men jeg må indrømme
de ting jeg har lavet efterhånden i javascript aldrig har været et
problem i hverken IE, Opera eller i Firefox så må jeg indrømme at jeg
kan godt lide den måde det nu virker på.

PS:
En helt anden ting... MANGE af de scripts man finder på nettet, er
efterhånden af så gammelt format at de bare ikke kan bruges mere, ofte
finder jeg nogle som stadig tjekker op om det er enten IE eller NS,
altså scripts fra omkring 1995 tiderne (AKA First Browser War)

PPS:
Så findes innerText faktisk slet ikke i ECMA standarden 3. version fra
1999 som jeg så vidt ved er den nyeste.
<http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf>

PPPS:
Så er DOM ikke en del af ECMAscript standarden, så IE har åbenbart også
indbygget lidt fra Javascript.

PPPPS:
Wikipedia er skøn :)

Martin (24-04-2007)
Kommentar
Fra : Martin


Dato : 24-04-07 10:34

Martin wrote:
>> Anyway...
>> Jeg tror ikke at document.[form navn].... går i IE.
>> Der skal enten .all eller .forms imellem.
>
> Jeg har desværre kun IE7 på denne maskine, men der virker mit
> ovenstående hurtige eksempel ganske udenmærket, så document.[form navn]
> virker skam også i IE7 - Jeg tester lige imorgen hvordan IE6 opfører sig.

Det virker også ganske udenmærket i IE6 - så document.[form
navn].[element].value virker i alle browsere...

Firefox 2, IE6, IE7 og Opera 9.20

Birger Sørensen (24-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 24-04-07 10:48

Martin wrote in dk.edb.internet.webdesign.clientside:
> Birger Sørensen wrote:
> > Martin.
> > Jeg startede midt i '80'erne engang, så 10 år ka' vist ikke gøre det... ;>)
> > Men jeg har da gjort lidt for at følge med, og lære nyt og mere...
>
> Der var jeg jo ikke engang født endnu :)
> Jeg startede lige da den tid hvor NS4 blev slagtet ret hårdt af denne
> nye Internet Explorer - Det er det tidligste jeg kan huske, så hvordan
> det var før, der må jeg melde stort pas.


> PPPPS:
> Wikipedia er skøn :)

Åh jo, det kan jeg godt huske.

Min pointe er netop, at på trods af standardiseringer og en mange gange mere
avanceret teknologi, er "vi" ikke kommet et skridt længere.

Du kan stadig ikke skrive din kode, så den forstås ens af alle fortolkere.
Det er nogle andre ting, og på en anden måde - men det er stadig det samme bøvl,
med at tilpasse forskelligheder.
Reelt begrænses mulighederne til hvad der kan lade sig gøre i alle fortolkerne.
Den største fællesnævner.

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (24-04-2007)
Kommentar
Fra : Martin


Dato : 24-04-07 11:59

Birger Sørensen wrote:
> Åh jo, det kan jeg godt huske.
>
> Min pointe er netop, at på trods af standardiseringer og en mange gange mere
> avanceret teknologi, er "vi" ikke kommet et skridt længere.
>
> Du kan stadig ikke skrive din kode, så den forstås ens af alle fortolkere.

Det kan jo ikke i nogle som helst programmeringssprog.
Java, Java#, C, C++, C# ingen af dem kan du jo kopiere kode 100% fra den
ene til den anden.

Hvorfor skulle man så kunne fra Javascript og til ECMAscript - selvom
syntaxen er stortset 100% ens, så er det jo stadigvæk 2 vidt forskellige
standarder/sprog.

Man skal lige huske på at det er 2 forskellige sprog der egentlig er
tale om når man snakker om javascript - alt efter hvilken browser.

Som sagt i min konklusion.
IE overholder ECMAscript standarden, men har dog medtaget nogle ting fra
det oprindelige Javascript.

Firefox overholder KUN Javascript standarden, og har ikke medtaget noget
som helst fra ECMAscript

Opera, har så leget lidt og implementeret dele/det hele af både
ECMAscript og Javascript

> Det er nogle andre ting, og på en anden måde - men det er stadig det samme bøvl,
> med at tilpasse forskelligheder.
> Reelt begrænses mulighederne til hvad der kan lade sig gøre i alle fortolkerne.
> Den største fællesnævner.

Du burde da kunne huske tilbage i NS4 og IE tiden - jeg kan huske at man
skulle med stortset hvad som helst man lavede tjekke om hvilken browser
der blev brugt.

Idag, der er det meget nemmere at kontrollere hvilke ting browseren forstår.

if(document.objekt) document.objekt.element.value=''
// ECMAscript
else document.getElementById('objekt').value=''
// Javascript

Lasse Reichstein Nie~ (24-04-2007)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 24-04-07 07:54

Birger Sørensen <sdcXfjernX@bbsorensen.com> writes:

> Martin wrote in dk.edb.internet.webdesign.clientside:
>> Martin wrote:

>> > Javascript har ændret sig ret meget siden du startede med det for 10 år
>> > siden (så vidt jeg husker er det 10 år siden du startede med javascript)

> Jeg startede midt i '80'erne engang, så 10 år ka' vist ikke gøre det... ;>)

Nu kom det første draft til det der engang skulle blive HTML i 1991,
og forslaget om at standardisere HTML (1.0) kom i 1993, så det skal
nok være lidt senere.

> Anyway...
> Jeg tror ikke at document.[form navn].... går i IE.
> Der skal enten .all eller .forms imellem.

Brug forms. Godt nok er ".all" understøttet af de fleste nyere browsere,
for at være venlig ved sidesnedkere der ikke følger standarderne, men
det er ikke del af nogen standard, og der er en standard-måde at gøre
det samme på.

I dette tilfælde er det tilgang til en form, så det mere nærliggende ville
være at bruge
document.forms['Bestilling'].elements['navn']
Eller bedre endnu, sende formen med som argument til funktionen.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Birger Sørensen (24-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 24-04-07 10:33

Lasse Reichstein Nielsen wrote in dk.edb.internet.webdesign.clientside:
> Birger Sørensen <sdcXfjernX@bbsorensen.com> writes:
>
> > Martin wrote in dk.edb.internet.webdesign.clientside:
> >> Martin wrote:
>
> >> > Javascript har ændret sig ret meget siden du startede med det for 10 år
> >> > siden (så vidt jeg husker er det 10 år siden du startede med javascript)
>
> > Jeg startede midt i '80'erne engang, så 10 år ka' vist ikke gøre det... ;>)
>
> Nu kom det første draft til det der engang skulle blive HTML i 1991,
> og forslaget om at standardisere HTML (1.0) kom i 1993, så det skal
> nok være lidt senere.

Kan hænde du har ret...

"Internettet" startede først i '80'erne i forbindelse med et forskningsprojekt
me partikelaccelleration ( hedder muligvis Cern - RAM'en er ved at være
slidt..).
Behovet opstod fordi man om eftermiddagen skulle bruge resultater fra
formiddagens eksperimenter - men forskerne var spredt over et stort fysisk
område.
Derfor oprettedes et kommunikations-net mellem biblioteker, baseret på en
protokol udviklet af det Canadiske militær - PPP.
Og jeg mener, at allerede dengang, så den første version af browsere og HTML
dagens lys.
Jeg ved godt at Amerikanerne gerne vil have kreditten for at have "opfundet"
Internettet. Det passer desværre ikke så godt med virkeligheden, for dem af os
der stadig kan huske den.
Jeg fik min første internetforbindelse i begyndelsen af '90'erne, og satte
dengang min første hjemmeside på nettet - og den havde både mouseover, mouseout
og onclick, og brugte javascript.

Så måske er det ikke 20 år siden endnu - men det er tæt på.

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (24-04-2007)
Kommentar
Fra : Martin


Dato : 24-04-07 11:52

Birger Sørensen wrote:
> "Internettet" startede først i '80'erne i forbindelse med et forskningsprojekt
> me partikelaccelleration ( hedder muligvis Cern - RAM'en er ved at være
> slidt..).
> Behovet opstod fordi man om eftermiddagen skulle bruge resultater fra
> formiddagens eksperimenter - men forskerne var spredt over et stort fysisk
> område.
> Derfor oprettedes et kommunikations-net mellem biblioteker, baseret på en
> protokol udviklet af det Canadiske militær - PPP.
> Og jeg mener, at allerede dengang, så den første version af browsere og HTML
> dagens lys.
> Jeg ved godt at Amerikanerne gerne vil have kreditten for at have "opfundet"
> Internettet. Det passer desværre ikke så godt med virkeligheden, for dem af os
> der stadig kan huske den.

Nemlig.. Arpanettet som mange kalder den "første" version af
internettet, består jo egentlig bare af computere som er koblet sammen
med en telefonlinje, og dem var der jo mange af på den tid, men
Arpanettet var så bare det største.

Men skal da lige siges at idéen om det første datanetværk allerede
opstod i '62 - og de idéer er de grundlæggende for internettets
udformning som det så ud dengang internettet startede. Det har jo nok
ændret sig en helt del siden da http protokollen er langt fra den eneste
der bliver brugt idag.


> Jeg fik min første internetforbindelse i begyndelsen af '90'erne, og satte
> dengang min første hjemmeside på nettet - og den havde både mouseover, mouseout
> og onclick, og brugte javascript.

Puhaa... jeg kan huske at jeg så noget på DK4, starten/midt 90 tror jeg
det har været, hvor de kiggede meget på internettet og forskellige sider
på dette store net.

Så var jeg hjemme hos en kammerat, hvis far arbejdede hos et større
computerfirma, og han havde internettet - Vi åbnede så DR.dk og det tog
næsten 3 min. at åbne siden. Se DET var tider :)

> Så måske er det ikke 20 år siden endnu - men det er tæt på.

De første 14.4 modemmer ankom i '91 - så ja, det er snart tæt på de 20 år :)

Lasse Reichstein Nie~ (25-04-2007)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 25-04-07 08:19

Martin <maaNO@SPAMscandesigns.dk> writes:

> Det kan jo ikke i nogle som helst programmeringssprog.
> Java, Java#, C, C++, C# ingen af dem kan du jo kopiere kode 100% fra
> den ene til den anden.

Nej, for det er jo vidt forskellige sprog (og det hedder "J#", ikke
"Java#" ... den tror jeg ikke de ville kunne få forbi Suns advokater)

> Hvorfor skulle man så kunne fra Javascript og til ECMAscript - selvom
> syntaxen er stortset 100% ens, så er det jo stadigvæk 2 vidt
> forskellige standarder/sprog.

Nej.
ECMAScript er ECMA's standardisering af de på det tidspunkt eksisterende
sprog: JavaScript 1.3 (Core) og JScript (den version i IE 4)

Den gang var JavaScript både sproget selv (Core) og dokumentmodellen.
ECMA standardiserede kun sproget. W3C har siden lavet standarder for
dokumentmodeller.

Alle senere browsere, og JScript og JavaScript-versioner, har alle
forsøgt at være ECMAScript-kompatible, og er det langt hen ad vejen
(modulo en enkelt bug eller to).

> Man skal lige huske på at det er 2 forskellige sprog der egentlig er
> tale om når man snakker om javascript - alt efter hvilken browser.

Så er det vist mere end to. IE, Mozilla(inkl Firefox), Opera,
Safari/Konqeror, etc., har hver deres implementation af ECMAScript.

> Som sagt i min konklusion.
> IE overholder ECMAscript standarden, men har dog medtaget nogle ting
> fra det oprindelige Javascript.

> Firefox overholder KUN Javascript standarden, og har ikke medtaget
> noget som helst fra ECMAscript

Firefox har implementeret *hele* ECMAScript standarden (ECMA 262 3.ed).

> Opera, har så leget lidt og implementeret dele/det hele af både
> ECMAscript og Javascript

....
> Du burde da kunne huske tilbage i NS4 og IE tiden - jeg kan huske at
> man skulle med stortset hvad som helst man lavede tjekke om hvilken
> browser der blev brugt.

Og det var allrede en dårlig idé dengang :) Specielt fordi der stadig
er folk der bruger kode som forsøger at finde ud af om man har IE eller
Netscape 4, og fuldstændig fejler hvis man ikke har nogen af dem.

> Idag, der er det meget nemmere at kontrollere hvilke ting browseren forstår.
>
> if(document.objekt) document.objekt.element.value=''
> // ECMAscript

Det har intet med ECMAScript at gøre at man kan tilgå DOM-elementer
med et navn/id som en global variabel. Det er bare tradition.

> else document.getElementById('objekt').value=''
> // Javascript

Og dette er W3C DOM-metodens ECMAScript-binding, som heller ikke har
noget med JavaScript at gøre.

Forskellen på de to sidste her er om det er ikke-standard (men historisk)
eller W3C DOM standard man bruger til at tilgå dokumentet.

Om noget er den første "JavaScript", fra dengang JavaScript inkluderede
mere end bare kærnesproget.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Lasse Reichstein Nie~ (24-04-2007)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 24-04-07 08:13

"Claus Skaarup \(Arbejde\)" <claus@limfjordsteatret.fejl> writes:

> Jeg kan ikke få min checkform til at virke.
>
> Kode:
>
> <script language='javascript' type="text/javascript">
>
> function Validate() {
> // Check for Empty fields
> if (document.Bestilling.navn.value == "Navn") ||
> (document.Bestilling.navn.value == "") {

Her har vi en syntaksfejl. Der skal være parentes uden om betingelsen
til en "if", så du skal minimum skrive:

if ((document.Bestilling.navn.value == "Navn") ||
(document.Bestilling.navn.value == "")) {

.... altså pakke or-udtrykket ind i en parentes.
Jeg vil anbefale at tilgå formen og dens elementer via standard-samlinger
(document.forms og form.elements). Og desuden er det altid godt at lave
lokale variable for at undgå alt for meget duplikeret kode:

var elems = document.forms['Bestilling'].elements;
var navnElem = elems['navn'];
if (navnElem.value == "Navn" || navnElem.value == "") {

....
> if (document.Bestilling.telefon.value == "Telefon") ||
> (document.Bestilling.telefon.value == "")
Samme problem her.

Når dit script faktisk slet ikke kan parses, så vil din browser give
en fejlbesked. Jeg ved ikke hvilken browser du bruger, men jeg vil
anbefale at du finder ud af hvordan du får disse fejlbeskedder vist
(og så vil jeg anbefale *ikke* at bruge IE til udvikling, da dens
fejlbeskedder er ... mindre informative end godt er).


> action="http://www.limfjordsteatret.dk/admin/index.asp?index=bestilbekraeft"
> method="post" name="Bestilling" id="Bestilling" onsubmit="return
> Validate();">

Her kalder du validate-metoden fra formen selv. Så er der ikke noget
nemmere and at sende formen med som argument. Så slipper man også
for at bekymre sig om at give formen selv en id (og evt. name).

Man kan også lade sin validering opsamle alle fejlene, og ikke kun
den første. Se fx følgende:

<form action="..." method="post" onsubmit="return validate(this);">
<input type="text" name="navn" value="Navn"
onfocus="selectIfDefault(this);">
<input type="text" name="telefon" value="Telefon"
onfocus="selectIfDefault(this);">
<input type="submit" value="Go!">
</form>
....
<script type="text/javascript">
function validate(form) {
var fejl = [];
var nameElem = form.elements['navn'];
if (controlEmpty(nameElem)) {
fejl.push("Du skal skrive dit navn!");
}
var phoneElem = form.elements['telefon'];
if (controlEmpty(phoneElem)) {
fejl.push("Du skal skrive dit telefonnummer!");
}
if (fejl.length > 0) {
alert(fejl.join("\n"));
return false;
}
}
// Tjekker at der er blevet skrevet noget i form-kontrol
function controlEmpty(ctrl) {
return ctrl.value == ctrl.defaultValue || ctrl.value.match(/^\s*$/);
}
// selecter indhold af kontrol hvis det ikke er blevet ændret
function selectIfDefault(ctrl) {
if (ctrl.value == ctrl.defaultValue) { ctrl.select(); }
}
</script>
>
> Der bliver ikke valideret noget som helst. Selv om der intet står i de to
> felter "telefon" og "navn", kommer der ikke nogen alert.
>
> WHY???

Syntaksfejl.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408173
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste