Avatar billede all-technology.com Nybegynder
30. december 2002 - 19:38 Der er 7 kommentarer og
1 løsning

form post submit

Hej
Jeg har lavet et lille script som kan ændre
på rækkefølgen af options i en select box.

Og jeg ved godt hvordan man summitter dem med get methoden, men hvordan gør man det ved hjælp af post
metoden ???

Håber i kan hjælpe.
Avatar billede sho Nybegynder
30. december 2002 - 20:13 #1
Kan du foklare lidt nærmere? Evt. vedlægge koden.

-Søren
Avatar billede all-technology.com Nybegynder
30. december 2002 - 21:18 #2
Her er en stump kode.
Spørgsmålet er hvordan man får det til at køre med POST og ikke GET.

<form action="votes.cgi" method="GET">
<script LANGUAGE="JavaScript">
<!-- Begin
function move(list,to)
{
    var index = list.selectedIndex;
    var total = list.options.length-1;
    if (index == -1) return false;
    if (to == +1 && index == total) return false;
    if (to == -1 && index == 0) return false;
    var item=list.options[index].text;
    var value=list.options[index].value;
    list.options[index] = new Option(list.options[index+to].text,list.options[index+to].value);
    list.options[index+to] = new Option(item,value);
    list.selectedIndex=index+to;
    list.focus();
}
function submitvotes(form)
{
       
    var args= "?";
    for (i = 0; i < form.votes.options.length; i++)
    {
    args += "votes[]" + "=" + form.votes.options[i].value;
    if (i != form.votes.options.length-1) args += "&";
    }
    document.location = form.action + args;
}
//End -->
</script>

<table><tr><td>
<select size=8 name="votes">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
</select>
</td><td>&nbsp;&nbsp;
<input type="button" value="&uarr;" onClick="move(this.form.votes,-1)"><br><br>&nbsp;&nbsp;
<input type="button" value="&darr;" onClick="move(this.form.votes,1)"></td></tr></table><br>&nbsp;
<input type="button" value="Opdater"
onClick="submitvotes(this.form)"><br>
</form>
Avatar billede sho Nybegynder
31. december 2002 - 10:02 #3
<form name="voteform" action="votes.cgi" method="POST">
<script LANGUAGE="JavaScript">
<!-- Begin
function move(list,to)
{
    var index = list.selectedIndex;
    var total = list.options.length-1;
    if (index == -1) return false;
    if (to == +1 && index == total) return false;
    if (to == -1 && index == 0) return false;
    var item=list.options[index].text;
    var value=list.options[index].value;
    list.options[index] = new Option(list.options[index+to].text,list.options[index+to].value);
    list.options[index+to] = new Option(item,value);
    list.selectedIndex=index+to;
    list.focus();
}
function submitvotes(form)
{

    var args= "?";
    for (i = 0; i < form.votes.options.length; i++)
    {
    args += "votes[]" + "=" + form.votes.options[i].value;
    if (i != form.votes.options.length-1) args += "&";
    }
//    document.location = form.action + args;
        document.voteform.submit();
}
//End -->
</script>

<table><tr><td>
<select size=8 name="votes">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
</select>
</td><td>&nbsp;&nbsp;
<input type="button" value="&uarr;" onClick="move(this.form.votes,-1)"><br><br>&nbsp;&nbsp;
<input type="button" value="&darr;" onClick="move(this.form.votes,1)"></td></tr></table><br>&nbsp;
<input type="button" value="Opdater"
onClick="submitvotes(this.form)"><br>
</form>

Jeg har lige kigget lidt på det, men har en aftale nu. Kigger videre om et par timer.

Hvor mange muligheder skal der være at vælge imellem, og hvor kommer de fra? En mulighed kunne være at lægge værdierne i et tilsvarende antal hidden fields.

Jeg har kaldt din form for voteform og submitter den i funktionen submitvotes. Den funktion skal så evt. lige skrives om til at lægge værdierne i hidden fields i stedet for at bygge en querystring.
Avatar billede Slettet bruger
31. december 2002 - 11:46 #4
Hvis du får informationerne ind i rækkefølge i en kommasepareret liste, vil det så være i orden? Fx:

option 1,option 3,option 2
Avatar billede all-technology.com Nybegynder
01. januar 2003 - 16:34 #5
Hvis du poster dit forslag kan jeg jo se om det virker,
Hvis det gør det er det jo iorden.

Men hvis du kan send option 1, option 3, option 2 via post methoden
skulle det vel ikke være svært at send værdierne istedet for ??

Knud
Avatar billede Slettet bruger
01. januar 2003 - 18:27 #6
Jo, for så skal der oprettes et antal hidden-felter, som så skal udfyldes og sendes. Og det virker ikke i NS4.

Omvendt kan man sige, at det ikke kan være så svært at skille en kommasepareret streng, så den bliver til et array! I PHP hedder metoden explode og i JavaScript split.
Avatar billede all-technology.com Nybegynder
01. januar 2003 - 18:55 #7
ok, men hvordan sender du en kommasepareret streng via post ??
Avatar billede Slettet bruger
02. januar 2003 - 13:47 #8
Det er heldigvis enkelt nok:

function submitvotes(form)
{
    arr = new Array();
    for (i = 0; i < form.votes.options.length; i++)
        arr[i] = form.votes.options[i].value;
    document.submitForm.hiddenFelt.value = arr.join(",");
    document.submitForm.submit();
}

Og så indsætter du denne kode nederst på din side:

<form name="submitForm" action="votes.cgi" method="post" style="display: none; visibility: hidden;">
<input type="hidden" name="hiddenFelt">
</form>

Nu er det så i virkeligheden slet ikke formen med selectboksen i, der bliver sendt, men i stedet den skjulte form.
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