Avatar billede kring Nybegynder
20. oktober 2004 - 10:43 Der er 5 kommentarer og
1 løsning

Submitte alle værdier i en <SELECT>

Hej Eksperter.

Jeg har en <select>-liste på min side, hvor brugeren får lov til at flytte elementerne op og ned ved hjælp af 2 knapper. Det er så planen at når brugeren er færdig med at "sortere" listen, så skal alle værdierne submittes og gemmes i en database. Jeg har ledt rundt her på Eksperten.dk, og har fundet følgende funktion, som jeg har rettet til:
function selectAll()
{
for(i=0;i<document.product_category_form.product_category.options.length + 1;i++)
{
document.product_category_form.product_category.options[i].selected = true;
}
}

Mit problem er at den kun submitter det sidste element i listen - altså det element der har fået sat "selected = true" sidst.

Håber der er nogle der kan hjælpe.

MVH
kring
Avatar billede roenving Novice
20. oktober 2004 - 11:59 #1
Også, hvis du sætter selecten til multiple lige før du sender ?-)

function selectAll(){
  var sel = document.product_category_form.product_category;
  sel.multiple = true;
  for(i=0;i<sel.length;i++){
    sel.options[i].selected = true;
  }
}

-- og du skal bemærke, at længden er en optælling af muligheder i listen, men indekseringen i javascript er nul-baseret, så hvis den f.eks. har 3 muligheder har de 0, 1 og 2 som index ...
Avatar billede roenving Novice
20. oktober 2004 - 12:00 #2
Alternativt kunne man smide værdierne over i et skjult felt, så hvis det ikke virker haben wir andere Methoden !-)
Avatar billede kring Nybegynder
20. oktober 2004 - 13:08 #3
roenving : Har forsøgt mig med multiple, men det havde ingen virkning. Så det ender nok med at jeg smider det hele i et hidden felt, og komma-sepererer det.
Avatar billede olebole Juniormester
20. oktober 2004 - 20:24 #4
<ole>

<script type="text/JavaScript">
function selectAll(f){
    var sel = f.elements["product_category[]"];
    sel.multiple = true;
    for(i=0;i<sel.length;i++){
        sel.options[i].selected = true;
    }
}
</script>

<form action="" method="post" name="product_category_form" onsubmit="selectAll(this)">
    <input type="hidden" name="contxt" value="testingSelect">
    <select name="product_category[]" multiple>
        <option value="valg_1">Et</option>
        <option value="valg_2">To</option>
        <option value="valg_3">Tre</option>
        <option value="valg_4">Fire</option>
        <option value="valg_5">Fem</option>
    </select>
    <button type="submit">Send</button>
</form>

Så ligger din select som et array på serveren. 'product_category[0]' vil således indeholde 'valg_1', osv.
Hvis du skriver i PHP, kan du evt. teste med dette i toppen af et simpelt dokument med ovenstående kode:

<?
if ( isset($_POST["contxt"]) && $_POST["contxt"]=="testingSelect" ) {
    print "<xmp>";
    var_dump( $_POST );
    print "</xmp>";
}
?>

/mvh
</bole>
Avatar billede kring Nybegynder
11. februar 2005 - 01:58 #5
Lukketid!

Brugte Ole's eksempel, så hvis du smider et svar Ole skal du få nogle points.
Avatar billede kring Nybegynder
24. februar 2005 - 11:04 #6
Lukker.
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