Avatar billede sako Nybegynder
18. juli 2005 - 20:43 Der er 16 kommentarer og
2 løsninger

Simpelt script virker i IE men ikke i firefox

Jeg har en dropdown boks - med et javascript som sender sender brugeren videre til en anden siden - med værdien fra dropdown boksen. Det virker fint i IE - men ikke i mozilla firefox - er der nogen der kan rette det til så det virker i begge browsere ?

<select name="prodid" class="form" id="prodid" onChange="java script:window.location='index.php?prodid='+prodid.value">
Avatar billede sukos Juniormester
18. juli 2005 - 20:53 #1
Hmm,

<form action="index.php" method="get">

og så:
<select name="prodid" onchange="this.form.submit();">


</form>
Avatar billede sako Nybegynder
18. juli 2005 - 20:56 #2
kan det ikke gøres uden en <form> ? - som i IE ?
Avatar billede skovenborg Nybegynder
18. juli 2005 - 20:59 #3
istedet for prodid.value kunne du også skrive this.value. Her henviser this direkte til din select-boks.

Den forrige metode er noget IE-snask, som ikke har noget holdpunkt i den officiele standard, og derfor har Mozilla eller andre browsere heller ikke nogen egentlig grund til at understøtte det.
Avatar billede sukos Juniormester
18. juli 2005 - 21:00 #4
?
Det skal du holde dig langt fra!

Hvis du vil bruge formelementer, så start en form!

action og method bør altid bruges!

Omend det kan omgås! :O)
Avatar billede sukos Juniormester
18. juli 2005 - 21:01 #5
Og som skovenborg, kan du henvise til select'en i stedet for!
Men uden brug af en form er det virkelig skodkode!
Avatar billede sako Nybegynder
18. juli 2005 - 21:18 #6
sukos - hvis vi tager udgangspunkt i din - hvordan får jeg så smidt værdien af dropdownen med - hvis den skal sendes som GET ?

Det virker i princippet - men jeg er nød til at ændre det til metode="POST" for at få mine andre værdier med over ??? -

Det vil sige hvis jeg skal have den som : <form action="index.php?id=3" method="POST"> for at den sender værdien id med.... - og så sender den ikke værdien for prodid med - det fatter jeg ikke helt ??
Avatar billede skovenborg Nybegynder
18. juli 2005 - 21:19 #7
hvis man skal følge standarden fra w3c, så er action krævet i et form-element, mens method (så vidt jeg kan læse mig frem til) er som standard get. Noget andet er selvfølgelig at browserne typisk er ligeglade om en selectbox er inde i en form eller ej, men det betyder ikke, at man bør udelade den.

Ref fra w3c: http://www.w3.org/TR/html401/interact/forms.html#edef-FORM
Avatar billede sako Nybegynder
18. juli 2005 - 21:24 #8
jeg kan selvfølgelige smide mine variabler som hidden fields og så virker det - men er det den optimale måde ?
Avatar billede olebole Juniormester
18. juli 2005 - 21:31 #9
<ole>

Med al respekt: At kontrol-elementer kun bør anvendes indenfor et form-element, er noget højglanspolleret vrøvl. At bruge kontroller udenfor et form-element har _intet_ med skodkode at gøre  :)

"The elements used to create controls generally appear inside a FORM element, but may also appear outside of a FORM element declaration when they are used to build user interfaces. This is discussed in the section on intrinsic events. Note that controls outside a form cannot be successful controls.":

http://www.w3.org/TR/html401/interact/forms.html#h-17.2.1

/mvh
</bole>
Avatar billede sako Nybegynder
18. juli 2005 - 21:35 #10
Nu ved du jo hvad du snakker om Ole - har du et bud på hvorfor det ikke virker i firefox ?
Avatar billede olebole Juniormester
18. juli 2005 - 21:35 #11
- det er fuldstændig legalt at bruge input-, select-, button- og alle mulige andre kontrol-elementer uden at bruge forms, når man bruger dem til at bygge bruger interfaces, der f.eks. grænser op til en JS-applikation  :)

<select name="prodid" class="form" id="prodid" onChange="window.location.href='index.php?prodid='+this.value">

- er således helt i overensstemmelse med W3C's HTML-rekommendationer  :)
Avatar billede skovenborg Nybegynder
18. juli 2005 - 21:37 #12
nådada, der kan man bare se. Det er vel også meget rart :-)
Avatar billede olebole Juniormester
18. juli 2005 - 21:43 #13
skovenborg >> Hvis du leder tilbage i E's DB, kan du også finde spm, hvor jeg fægter for, at den slags elementer _absolut_ kun hører hjemme i en form. Vi bliver hele tiden klogere  ;o)

sako >> Det var din adressering af elementet, den var galt med. Du kunne også have brugt:

<select name="prodid" class="form" id="prodid" onChange="window.location.href='index.php?prodid='+document.getElementById('prodid').value">

- men det er noget mere 'sexy' at referere med this  ;o)

Derudover skriver man aldrig 'java script:' i en event-handler. Det bruges stort set kun i et links href - og der afvikler man kun JS, hvis man er absolut tvunget til det.
Avatar billede sako Nybegynder
18. juli 2005 - 21:47 #14
Så lærte jeg også lidt idag - olebole smid et svar  - og tak for hjælpen
Avatar billede olebole Juniormester
18. juli 2005 - 21:51 #15
- selvtak ... jeg vil dog gerne dele med skovenborg, der jo faktisk gav dig løsningen først i (18/07-2005 20:59:12) - men blev bragt lidt i tvivl, om det var legalt udenfor en form, omend han var klar over, browserne er ligeglade  :)
Avatar billede sako Nybegynder
18. juli 2005 - 21:55 #16
Jamen hvis skovenborg lige smider et svar - så deler i da bare...:-)
Avatar billede skovenborg Nybegynder
18. juli 2005 - 22:00 #17
okay, og tak for den ekstra info omkring form-elementet. Det var nu rart at få at vide. At browserne er ligeglade plejer ellers ikke at betyde, at det er en korrekt måde at skrive på, men på dette punkt er det nu meget rigtigt...
Avatar billede sako Nybegynder
18. juli 2005 - 22:08 #18
tak for hjælpen begge to
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester