/ 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
Javascriptproblem med form i XHTML
Fra : Christoffer Kjeldgaa~


Dato : 28-09-04 11:44

Hej gruppe,

Jeg har ikke så frygtelig meget forstand på JavaScript, men har
da arbejdet med det indimellem hvor jeg selv har kunnet justere
et par småting. Nu er jeg imidlertid i vildrede med dette lille
script jeg har fundet på nettet, som jeg simplethen ikke kan
rettet til. Scriptet er ganske simpelt og undersøger blot om en
bruger har skrevet sit navn i en form, og er dette ikke
tilfældet, får brugeren en alert. Det ser ud som følger:

<script type="text/javascript">
function tjek(){
if(document.formular.navn.value == ""){
alert("Vær venlig at skrive dit navn.")
document.formular.navn.focus()
return false
}
}
</script>

Og formen:

<form name="formular" method="post" action="#" onsubmit="return
tjek()">
<input type="text" name="navn" alt="Navn" />
<input type="submit" name="send" value="Send" />
</form>

Det virker sådan set fint nok, men da jeg skriver min hjemmeside
i XHTML ville jeg helst undgå at give formen et name og i stedet
et id="formular". Hvis jeg ændrer det til id validerer siden godt
nok, men mit script virker ikke længere. Er der nogen der ved
hvordan jeg kan løse dette?

Med venlig hilsen,
Christoffer Kjeldgaard

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

 
 
Ryan Kristensen (28-09-2004)
Kommentar
Fra : Ryan Kristensen


Dato : 28-09-04 12:13

On 28 Sep 2004 10:43:42 GMT, Christoffer Kjeldgaard <christoffer@sappy.dk>
wrote:

> <script type="text/javascript">
> function tjek(){
> if(document.formular.navn.value == ""){

burde nok være
if(document.forms['formular'].elements['navn'].value == ""){
hvis du vil være _helt_ korrekt.

> Det virker sådan set fint nok, men da jeg skriver min hjemmeside
> i XHTML ville jeg helst undgå at give formen et name og i stedet
> et id="formular". Hvis jeg ændrer det til id validerer siden godt
> nok, men mit script virker ikke længere. Er der nogen der ved
> hvordan jeg kan løse dette?

I xhtml er der endnu ikke noget problem i at bruge name-attributten på
form elementer.
Prøv at køre den igennem <http://validator.w3.org/> der skulle ikke gerne
komme en fejl.

--
Ryan Kristensen

Christoffer Kjeldgaa~ (28-09-2004)
Kommentar
Fra : Christoffer Kjeldgaa~


Dato : 28-09-04 12:21

Ryan Kristensen wrote in dk.edb.internet.webdesign.clientside:

> burde nok være
> if(document.forms['formular'].elements['navn'].value == ""){
> hvis du vil være _helt_ korrekt.

Så lærte jeg da det

> I xhtml er der endnu ikke noget problem i at bruge name-attributten på
> form elementer.
> Prøv at køre den igennem <http://validator.w3.org/> der skulle ikke gerne
> komme en fejl.

Ikke desto mindre er det faktisk det der sker. Jeg kører med Xhtml Strict og
validatoren brokker sig over name-attributten som det eneste. Kan det så være
noget helt andet i min syntaks der er galt, hvis det altså er rigtigt at man
godt kan kan bruge name i Xhtml. Det er ellers ikke hvad jeg har læst mig til.

Med venlig hilsen,
Christoffer Kjeldgaard

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

Ryan Kristensen (28-09-2004)
Kommentar
Fra : Ryan Kristensen


Dato : 28-09-04 18:41

On 28 Sep 2004 11:20:49 GMT, Christoffer Kjeldgaard <christoffer@sappy.dk>
wrote:

> Ikke desto mindre er det faktisk det der sker. Jeg kører med Xhtml
> Strict og
> validatoren brokker sig over name-attributten som det eneste. Kan det så
> være
> noget helt andet i min syntaks der er galt, hvis det altså er rigtigt at
> man
> godt kan kan bruge name i Xhtml.

Det skulle jeg mene. Jeg har brugt name på form elementer i xhtml strict
mange gange uden problemer.
Se f.eks. her: <http://www.ryankristensen.com/tests/testform.html>
Har du et link til siden?

--
Ryan Kristensen

Erik Ginnerskov (29-09-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 29-09-04 15:39

Ryan Kristensen wrote:

> Det skulle jeg mene. Jeg har brugt name på form elementer i xhtml
> strict mange gange uden problemer.

Jeps. Det er legalt på inputfelter. Men på formtagget må man ikke.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Ryan Kristensen (30-09-2004)
Kommentar
Fra : Ryan Kristensen


Dato : 30-09-04 18:24

On Wed, 29 Sep 2004 16:39:20 +0200, Erik Ginnerskov
<erik@donotspammmeplease.invalid> wrote:

> Ryan Kristensen wrote:
>
>> Det skulle jeg mene. Jeg har brugt name på form elementer i xhtml
>> strict mange gange uden problemer.
>
> Jeps. Det er legalt på inputfelter. Men på formtagget må man ikke.

Nej selvfølgelig. Og løsningen er så, enten at bruge:
function tjek(){
if(document.forms[0].elements['navn'].value == ""){
alert("Vær venlig at skrive dit navn.")
document.forms[0].elements['navn'].focus()
return false
}
}

eller endnu bedre:
<form method="post" action="#" onsubmit="return tjek(this)">
function tjek(form){
if(form.elements['navn'].value == ""){
alert("Vær venlig at skrive dit navn.")
form.elements['navn'].focus()
return false
}
}

På den måde kan man undgå, at skulle bruge name på form-tagget.

--
Ryan Kristensen

Martin Hintzmann And~ (01-10-2004)
Kommentar
Fra : Martin Hintzmann And~


Dato : 01-10-04 07:55

Ryan Kristensen wrote:
>
>
> På den måde kan man undgå, at skulle bruge name på form-tagget.
>

Som Lasse også skriver, er det kun NS4 der kræver at der er en name
attribut på form elementet. De øvrige browsere kan nøjes med et id, og
stadig tilgå det via forms-collectionen i javascript.

Jeg _tror_ der er flere der køre uden javascript i deres browser end der
er NS4 brugere. Så problemet er vel ikke så stort, især ikke hvis du
også husker at validere på serversiden, hvilket man altid bør gøre.

--
Martin Hintzmann Andersen
http://www.hintzmann.dk/

Jens Gyldenkærne Cla~ (28-09-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-09-04 12:41

Christoffer Kjeldgaard skrev:

> Det virker sådan set fint nok, men da jeg skriver min hjemmeside
> i XHTML ville jeg helst undgå at give formen et name og i stedet
> et id="formular". Hvis jeg ændrer det til id validerer siden godt
> nok, men mit script virker ikke længere. Er der nogen der ved
> hvordan jeg kan løse dette?

Prøv at bruge document.getElementById("navn") i stedet for
document.formular.navn. Det virker i alle nyere browsere.

Noget helt andet - siden du nævner valideringsproblemer som årsagen til
at droppe name, antager jeg at du anvender xhtml 1.1. Hvis det er
korrekt, bruger du så også mime-typen application/xhtml+xml?
Hvis du bruger xhtml 1.1 sammen med text/html, vil jeg foreslå dig at
læse siden her: <http://www.hintzmann.dk/articles/doctype/#ikke_xhtml11>

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christoffer Kjeldgaa~ (28-09-2004)
Kommentar
Fra : Christoffer Kjeldgaa~


Dato : 28-09-04 12:52

Jens GyldenkærneClausen wrote:

> Prøv at bruge document.getElementById("navn") i stedet for
> document.formular.navn. Det virker i alle nyere browsere.

Mange tak! Det virker fuldstændig som det skal.

> Noget helt andet - siden du nævner valideringsproblemer som årsagen til
> at droppe name, antager jeg at du anvender xhtml 1.1. Hvis det er
> korrekt, bruger du så også mime-typen application/xhtml+xml?
> Hvis du bruger xhtml 1.1 sammen med text/html, vil jeg foreslå dig at
> læse siden her: <http://www.hintzmann.dk/articles/doctype/#ikke_xhtml11>

Jeg bruger faktisk "kun" xhtml 1.0 af samme grunde som er nævnt i
artiklen. Jeg har før læst den med interesse og kunne ikke se det store i
at skrifte til 1.1 når det nu alligevel var minimalt hvad der var af
ændringer i forhold til 1.0.

Med venlig hilsen,
Christoffer Kjeldgaard

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

Lasse Reichstein Nie~ (28-09-2004)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 28-09-04 19:25

Christoffer Kjeldgaard <christoffer@sappy.dk> writes:

> Jeg har ikke så frygtelig meget forstand på JavaScript, men har
> da arbejdet med det indimellem hvor jeg selv har kunnet justere
> et par småting.

Javascript i browsere er alt andet end så nemt som det ser ud til.
Djævelen er jo altid i detaljerne, og hvis man skal være kompatibel
med 5+ forskellige browsere (i flere versioner hver), så er der
frygteligt mange detaljer :)

....
> <script type="text/javascript">
> function tjek(){
> if(document.formular.navn.value == ""){

Som andre har sagt:
document.forms['formular'].elements['navn'].value

Der er ikke brug for at bruge "getElementById", da "forms"-samlingen
er lige så gyldig W3C DOM og samtidigt virker i alle browsere.

> alert("Vær venlig at skrive dit navn.")

Jeg anbefaler at slutte sætningen med et semikolon, også selvom det
kan udelades. Det øger overskueligheden at man er helt sikker på
hvor sætningerne ender.

> document.formular.navn.focus()

Også her skal det være
document.forms['formular'].elements['navn'].focus();

> <form name="formular" method="post" action="#" onsubmit="return
> tjek()">

I Strict XHTML har "form"-elementet ikke en "name"-attribut. Den
er "deprecated" i XHTML 1.0 Transitional (og derfor væk i Strict),
og er helt væk i XHTML 1.1 (som bygger på 1.0 Strict).
<URL:http://www.w3.org/TR/xhtml1/#h-4.10>

> Det virker sådan set fint nok, men da jeg skriver min hjemmeside
> i XHTML ville jeg helst undgå at give formen et name og i stedet
> et id="formular".

Med god grund.

> Hvis jeg ændrer det til id validerer siden godt
> nok, men mit script virker ikke længere.

Hvilken browser bruger du?
Hvordan fejler det? (der må komme en fejlbesked, selvom den skal
slås til i nogle browsere).

> Er der nogen der ved hvordan jeg kan løse dette?

Jeg vil anbefale at bruge XHTML 1.0 Transitional indtil videre,
hvis det er vigtigt at siden er XML. Ellers bare HTML 4.01 Strict.

Ældre browsere (hvilket inkluderer IE 6) forstår slet ikke XHTML,
men fortolker det bare som HTML alligevel. Endnu ældre browsere,
som Netscape 4, hvis man er tvunget til at tage hensyn til den,
forstår kun "name"-attributten alligevel.

/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 : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste