/ 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
Tilgængelig formular
Fra : Lars Olesen


Dato : 13-01-04 09:17

Jeg har lavet en formular på:

http://www.vih.dk/bestilling/bestil_materiale_form.php

Felterne vises dynamisk alt efter brugerens valg med javascript, men jeg
er ikke tilfreds med tilgængeligheden af siden.

Jeg gemmer nemlig felterne med style="display: none;" og ændrer så denne
attribut vha. javascript. Men det bør jo være omvendt, at feltet er
synligt med mindre man har slået javascript til.

Hvis man har det gemmer den så feltet, og viser det igen, hvis man laver
et særligt valg.

Desuden bruger jeg onclick-operatoren, men den er jo heller ikke
tilgængelig med keyboard. Skal jeg fx på en checkbox både definere
onkeypress og onclick, eller kan jeg bruge en anden. (og det kan ikke
væer onchange eller onfocus, dem har jeg testet :))

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


 
 
Jens Gyldenkærne Cla~ (13-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-01-04 09:39

Lars Olesen skrev:

> Jeg gemmer nemlig felterne med style="display: none;" og
> ændrer så denne attribut vha. javascript. Men det bør jo være
> omvendt, at feltet er synligt med mindre man har slået
> javascript til.

Netop. Du kan skjule elementerne med et javascript der køres ved
body-onload. Hvis det giver en uheldig visning (hvor elementerne
kortvarigt vises), kan du i stedet benytte javascript til at
udskrive feltkoden med display none, og så have en tilsvarende
udgave uden display-manipulering liggende i <noscript>.

Jeg bruger selv den sidste model på denne måde:

<script type="text/javascript">
   document.write('<tr id="webrow">');
</script>
<noscript><tr></noscript>

(hvor css-kode så får tr#webrow til at forsvinde).
--
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

Lars Olesen (13-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 13-01-04 10:00

> Netop. Du kan skjule elementerne med et javascript der køres ved
> body-onload. Hvis det giver en uheldig visning (hvor elementerne
> kortvarigt vises), kan du i stedet benytte javascript til at
> udskrive feltkoden med display none, og så have en tilsvarende
> udgave uden display-manipulering liggende i <noscript>.

Jeg har ikke adgang til body, fordi siderne genereres dynamisk, og sådan
gør body også. Men jeg kan vel bare bruge window.onload=init(); og så
lave en init()-funktion.

Det gør ikke så meget, hvis elementet lige vises ganske kort, for det
står lidt nede på siden, og brugeren vil sikkert ikke opdage det!

Jeg vil lige arbejde lidt videre med at lave sådan en funktion, hvis jeg
kan hitte ud af det.

> Jeg bruger selv den sidste model på denne måde:
>
> <script type="text/javascript">
>    document.write('<tr id="webrow">');
> </script>
> <noscript><tr></noscript>

Jeg synes principielt ikke, at man skal sidde og lave to versioner af
noget på hjemmesiden. Man risikerer også bare, at man fx glemmer at
rette den ene :)

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


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


Dato : 13-01-04 10:13

Lars Olesen wrote:
>
> Jeg har ikke adgang til body, fordi siderne genereres dynamisk, og sådan
> gør body også. Men jeg kan vel bare bruge window.onload=init(); og så
> lave en init()-funktion.
>

Lille note.

Det hedder ikke
window.onload = init();
men
window.onload = init;

Hintzmann c",)

Lars Olesen (13-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 13-01-04 10:18

> Lille note.
>
> Det hedder ikke
> window.onload = init();
> men
> window.onload = init;

Ok, tak for det.

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


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


Dato : 13-01-04 09:45

Lars Olesen wrote:
> Jeg har lavet en formular på:
>
> http://www.vih.dk/bestilling/bestil_materiale_form.php
>
> Felterne vises dynamisk alt efter brugerens valg med javascript, men jeg
> er ikke tilfreds med tilgængeligheden af siden.
>
> Jeg gemmer nemlig felterne med style="display: none;" og ændrer så denne
> attribut vha. javascript. Men det bør jo være omvendt, at feltet er
> synligt med mindre man har slået javascript til.
>

Det er rigtig, du skal bare have fat i felterne og så skjule dem fra javascript.

Det kan du enten gøre manuelt ved at skjule nogle bestemte ID'er med javascript. ex.
document.getElementById("IDet").style.display = "none";

Der er også mulighed for at automatisere det lidt ved at sætte en class på de felter som skal
skjules. Herefter bruger du javascript til at skjule alle de elemnter med den bestemte class.

Så skjules de kun når javascript er slået til (og DOM'en understøttes).

> Hvis man har det gemmer den så feltet, og viser det igen, hvis man laver
> et særligt valg.
>
> Desuden bruger jeg onclick-operatoren, men den er jo heller ikke
> tilgængelig med keyboard. Skal jeg fx på en checkbox både definere
> onkeypress og onclick, eller kan jeg bruge en anden. (og det kan ikke
> væer onchange eller onfocus, dem har jeg testet :))
>

I de fleste browsere virker onclick på en radio-/check-box også hvis man benytter tastaturet.
(Testet i Moz1.5 + IE5.0 + IE6.0 + Op7.23 ) Men jeg er ikke sikker på om det gør sig gældende
for alle browsere.

- Nogen der ved det ?

Hintzmann c",)

Lars Olesen (13-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 13-01-04 10:04

>> http://www.vih.dk/bestilling/bestil_materiale_form.php

> Det er rigtig, du skal bare have fat i felterne og så skjule dem fra
> javascript.

Ja, jeg er også blevet klogere :)

> Der er også mulighed for at automatisere det lidt ved at sætte en class
> på de felter som skal skjules. Herefter bruger du javascript til at
> skjule alle de elemnter med den bestemte class.

Kan man på samme måde med javascript tilgå alle classerne, ligesom
getElementById-funktionen?

> Så skjules de kun når javascript er slået til (og DOM'en understøttes).

Ja, det er det jeg gerne vil. Så må al den lækre funktionalitet gå tabt
til de gamle browsere :)

> I de fleste browsere virker onclick på en radio-/check-box også hvis man
> benytter tastaturet. (Testet i Moz1.5 + IE5.0 + IE6.0 + Op7.23 ) Men jeg
> er ikke sikker på om det gør sig gældende for alle browsere.
>
> - Nogen der ved det ?

Ja, er der nogen der ved det?

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


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


Dato : 13-01-04 10:24

Lars Olesen wrote:

>
> Kan man på samme måde med javascript tilgå alle classerne, ligesom
> getElementById-funktionen?
>

Det findes mærkeligt nok ikke som en DOM-metode. Men man kan lave sin egen funktion som
returnere array af elementerne der har en bestemt class.

Her er den funktion jeg bruger.

getElementsWithClassName = function (el,className) {
var nodeList;
var searchObj = new Array();
nodeList = el.all || el.getElementsByTagName("*");
for (var i = 0, c = null, cn; (document.all ? c = nodeList(i) : c = nodeList.item(i)); i++) {
// if (c.nodeType == 1) { // if (c==tag) not supported by opera (speed up)
cn = c.className.split(" ");
for (j = 0; j < cn.length; j++) {
if (cn[j]==className) {
searchObj[searchObj.length] = c;
}
}
// }
}
return searchObj;
}

Du kan så kalde den på følgende måde:
var aEl = getElementsWithClassName( document.getElementById("main"), "CLASSen" );


Hintzmann c",)

Lasse Reichstein Nie~ (13-01-2004)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 13-01-04 19:27

Martin Hintzmann Andersen <no@spam.dk> writes:

> Det findes mærkeligt nok ikke som en DOM-metode. Men man kan lave sin
> egen funktion som returnere array af elementerne der har en bestemt
> class.

Man kunne også bare gøre dette:
<script type="text/javascript">
document.write("<style type='text/css'>",
" .initialHidden {display:none;}",
"<\/style>");
</script>

/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.'

Lars Olesen (14-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 14-01-04 01:13

> Man kunne også bare gøre dette:
> <script type="text/javascript">
> document.write("<style type='text/css'>",
> " .initialHidden {display:none;}",
> "<\/style>");
> </script>

Elegant. Ja, der er ikke nogen grund til, at det skal være så svært :)
Tak for hjælpen!


--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste