Avatar billede d797fni Nybegynder
22. juni 2004 - 08:37 Der er 8 kommentarer og
1 løsning

Loop gennem Listbox (select-option)

Jeg har en listbox (<\select><\option>)hvor jeg kan tilføje fra 0 til mange værdier.

Når jeg så submitter min form skal disse værdier lægges ned i en database.

Hvordan loop'er jeg gennem min <\select> for at få fat i hver element?
Avatar billede fennec Nybegynder
22. juni 2004 - 08:44 #1
hvis du har mærkeret (valgt) alle elementerne når du submitter, burde bu kunne fange dem sådan:

for each optID in request.form("DinSelect")
 
next
Avatar billede fennec Nybegynder
22. juni 2004 - 08:54 #2
Og du kan automatisk vælge alle options med dette javascript, som bare skal køres onsubmit.

function selectAll()
{
  for (x=0;x<document.DinForm.DinSelect.length;x++)
    document.DinForm.DinSelect[x].selected = true;
}

Husk at der skal MULTIPLE på din select box så du kan vælge flere af gangen.
Avatar billede d797fni Nybegynder
22. juni 2004 - 09:01 #3
Det sidste ser interessant ud. Jeg regner med at lægge værdierne over i en komma-streng ved submit. Der kan jeg jo bruge din løsning.
Avatar billede fennec Nybegynder
22. juni 2004 - 09:09 #4
Nu ved jeg selv følgelig ikke, hvad du skal bruge data'erne til, men ofte vil det være nemmest at bruge løsningerne sammen.

Hvis du kører javascriptet, får du alle id'erne (i optID) ved at bruge for..next løkken (medmindre du kører JScript).
Avatar billede d797fni Nybegynder
22. juni 2004 - 09:16 #5
Jeg skal bruge data'ene i VB. Jeg henter data fra min komponent der lægger dem ned i basen.

Kan du hurtigt lave et script der henter alle værdierne fra DinSelect og smider dem ned i et tekstfelt som kommasepareret streng?
Avatar billede fennec Nybegynder
22. juni 2004 - 09:26 #6
Hvis du skal bruge dem som kommasepareret kan du, som du også sagde, lige så godt gøre det i JavaScript, også gemme listen i et hidden felt. Jeg har lavet et eks hvor du gør det i JavaScript, og et hvor du gør det i ASP.

--- JavaScript ---
function selectAll()
{
  temp = ""
  for (x=0;x<document.DinForm.DinSelect.length;x++)
  {
    if(temp == "")
      temp = document.DinForm.DinSelect[x].value;
    else
      temp += ","+ document.DinForm.DinSelect[x].value;
  }
    document.DinForm.DinHidden.value = temp;
}

--- VBScript ---
(Funktion fra "08:54:45" post skal selvfølgelig også køres.)
temp = ""
for each optID in request.form("DinSelect")
  if temp = "" then
    temp = optID
  else
    temp = temp &","& optID
  end if
next
Avatar billede d797fni Nybegynder
22. juni 2004 - 09:37 #7
Got it.......

answer please ! *s*
Avatar billede fennec Nybegynder
22. juni 2004 - 09:39 #8
ok :o)
Avatar billede d797fni Nybegynder
22. juni 2004 - 09:46 #9
tak for hjælpen
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
Kurser inden for grundlæggende programmering

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