Avatar billede showsource Seniormester
25. november 2008 - 11:12 Der er 12 kommentarer og
1 løsning

Sætte en værdi i flere selectbox til selected

Hej
Jeg har en selectbox som ser så'n ud:

<select name="kategori[]" class="input">
    <option value="1">Eksperten</option>
    <option value="2">Google</option>
    <option value="5">Localhost</option>
    <option value="4">Medier</option>
    <option value="6">Programmering</option>
    <option value="3">Thailand</option>
    <option value="7">Vejr prognoser</option>
</select>

Den bruges til at vælge hvilken kategori et link skal vises i.
Jeg viser så alle links, f.eks. 10 stk. for tilhørende kategori, f.eks. 7
Altså 10 links som hører til kategori 7
Og deraf 10 selectbox også

Så vil jeg gerne med noget javascript sætte kategori lig med selected når link vises.

Hvordan gør jeg det?


<script type="text/javascript">
var selectnavn = document.forms['editlink'].elements['kategori[]'];
var antal = selectnavn.length;
var opt = selectnavn.options.length;
var nr = 7;
alert('id '+nr+', antal boxe '+antal+', antal options '+opt);

</script>

IE er ikke med på options.length
FF tæller antal options, ikke hvor mange selectboxe der er
Avatar billede showsource Seniormester
25. november 2008 - 11:13 #1
Nåh, hov der var lige copy/paste som smuttede:
name="kategori[]"
Avatar billede olebole Juniormester
25. november 2008 - 13:31 #2
<ole>

Du er jo nødt til at angive, hvilken select du vil tælle options i  ;o)

<form name="editlink" action="">
<select name="kategori[]" class="input">
    <option value="1">Eksperten</option>
    <option value="2">Google</option>
    <option value="5">Localhost</option>
    <option value="4">Medier</option>
    <option value="6">Programmering</option>
    <option value="3">Thailand</option>
    <option value="7">Vejr prognoser</option>
</select>
<select name="kategori[]" class="input">
    <option value="1">Eksperten</option>
    <option value="2">Google</option>
    <option value="5">Localhost</option>
    <option value="4">Medier</option>
    <option value="6">Programmering</option>
    <option value="3">Thailand</option>
    <option value="7">Vejr prognoser</option>
</select>
<select name="kategori[]" class="input">
    <option value="1">Eksperten</option>
    <option value="2">Google</option>
    <option value="5">Localhost</option>
    <option value="4">Medier</option>
    <option value="6">Programmering</option>
    <option value="3">Thailand</option>
    <option value="7">Vejr prognoser</option>
</select>
</form>

<script type="text/javascript">
var selectnavn = document.forms['editlink'].elements['kategori[]'];
var antal = selectnavn.length;
var opt = selectnavn[1].options.length;
var nr = 7;
alert('id '+nr+', antal boxe '+antal+', antal options '+opt);
</script>

Men brackets i navnet er jo kun interessant, hvis du skal kunne vælge flere options i hver select. Ellers kan de ligeså godt undværes  =)

/mvh
</bole>
Avatar billede olebole Juniormester
25. november 2008 - 13:33 #3
PS: det er Eksperten, der spiser den sidste bracket  :o|
Avatar billede showsource Seniormester
25. november 2008 - 13:57 #4
brackets er fordi man skal kunne ændre kategori for et givent link.
Kunne sagtens lave det i php med et array, men i stedet for at køre en foreach() flere gange, ville jeg gerne ha' en selectbox defineret på forhånd.

Den bruges dels til at oprette et link, dels til at vælge hvilke links man vil redigere, og tilsidst vist som tilhørende specifikt link.
Og det er i den sidste jeg gerne ville bruge javascript til at lade en bestemt option være selected.

Med dit viste ex. får jeg fejl i FF, "selectnavn[1].options is undefined"
men det virker i IE
Avatar billede olebole Juniormester
25. november 2008 - 14:14 #5
Jeg får ingen fejl i FF med den kode, jeg viste. Jeg forstod ikke forklaringen på, hvorfor brackets er nødvendige  =)
Avatar billede showsource Seniormester
25. november 2008 - 14:17 #6
Hmm, nu ved jeg sgutte havd jeg lavede....

Dette virker for mig i IE og FF


var selectnavn = document.forms['editlink'].elements['kategori[]'];
var antal = selectnavn.length;
var opt = selectnavn[1].options.length;
var nr = <?php echo $katid; ?>;
alert('id '+nr+', antal boxe '+antal+', antal options '+opt);


Jeg skal [] fordi der vises en række links som man kan redigere/slette.
Når en update af db køres, vil den kun finde første/sidste options value

Du må gerne lægge et svar!
Avatar billede showsource Seniormester
05. december 2008 - 14:35 #7
Ole eeeeeeeee !
Avatar billede olebole Juniormester
06. december 2008 - 22:20 #8
Udfra din kode og dine forklaringer kan jeg stadig ikke forstå, hvad du prøver at lave og hvorfor  =)
Avatar billede showsource Seniormester
07. december 2008 - 08:26 #9
Koden er så helelr ikke helt den jeg bruger.
Men jeg har en side hvor man som bruger kan oprette/redigere links.
Men før man kan det, skal man ha' en eller flere kategorier.
Ved load af siden henter jeg kategorier fra db, og de bliver så gemt i en "buffer" som en selectbox.

select'en vises når man vil oprette et nyt link, og som "link" til hvilken kategori man vil redigere links for.
Ved redigering, vises boxen også for hvert link der er i kategorien.

Jeg kunne selvf. blot lave et array med kategorier, men vil hellere bruge "buffer" og så lade clienten selecte den rette kategori ved redigering af links.
Avatar billede showsource Seniormester
15. december 2008 - 16:26 #10
Ole, du skal lige lægge et svar ! :O)
Avatar billede olebole Juniormester
15. december 2008 - 22:24 #11
Jamen, det gør jeg da så lige  ;o)
Avatar billede showsource Seniormester
16. december 2008 - 07:46 #12
Takker for hjælp!
Avatar billede olebole Juniormester
16. december 2008 - 10:57 #13
Selvtak - og tak for points  *<|:o)
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