Avatar billede hyberpreprocessor Nybegynder
15. april 2005 - 09:56 Der er 13 kommentarer og
1 løsning

Flytte options i multi select op og ned

Hej

Jeg har denne her menuadminstrator,

http://www.thedeathart.dk/diverse/menutest/ (view)
http://www.thedeathart.dk/diverse/menutest/menu.js (js source)

Jeg vil gerne kunne flytte de forskellige options op og ned, men ved ikke hvordan jeg skal konstrurer dette, så kunne godt tænke mig lidt hjælp med det.
Avatar billede busschou Praktikant
15. april 2005 - 10:01 #1
Er det ikke lidt som normal sortering
Du kan finde det markerede elements position.
Hvis der klikkes på op så skal det bytte plads med elementet på positionen minus een vel?
Kopier det første ned i bunden
Kopier det andet ind på det førstes plads
Kopier første tilbage på det andets plads og sæt den midlertidige til null
Avatar billede hyberpreprocessor Nybegynder
15. april 2005 - 10:05 #2
Hvordan indsætter jeg på en bestem position ?
Lige nu tilføjer jeg bare via. append
Avatar billede busschou Praktikant
15. april 2005 - 10:17 #3
måske noget ligende det her
---
function op()
{
  var nr = document.dbListForm.dbList.selectedIndex;
  var indhold = document.dbListForm.dbList.options[nr].value
  var indhold2 = document.dbListForm.dbList.options[nr-1].value
  document.dbListForm.dbList.options[nr].value = indhold2
  document.dbListForm.dbList.options[nr-1].value = indhold1
}
Avatar billede hyberpreprocessor Nybegynder
15. april 2005 - 11:53 #4
hmm, kan ikke få det til at virke.

function op()
{
  var nr = document.dbListForm.dbList.selectedIndex;
  var indhold1 = document.dbListForm.dbList.options[nr].value;
  var indhold2 = document.dbListForm.dbList.options[nr-1].value;
  document.dbListForm.dbList.options[nr].value  = indhold2;
  document.dbListForm.dbList.options[nr-1].value = indhold1;
}

Den retunere ingen fejl, men der sker intet.
Skal det ikke også laves til en Option først ?
Avatar billede busschou Praktikant
15. april 2005 - 12:02 #5
Det ville jeg ikke tro da den jo bare bytter om på felternes values.
Avatar billede busschou Praktikant
15. april 2005 - 12:06 #6
hvad så med:
------
function op()
{
  var valgt = document.dbListForm.dbList.options[nr]
  var oppe = document.dbListForm.dbList.options[nr-1]
  document.dbListForm.dbList.options[nr] = oppe
  document.dbListForm.dbList.options[nr-1] = valgt
}
---
mon det kan bytte dem helt om
Avatar billede hyberpreprocessor Nybegynder
15. april 2005 - 12:38 #7
okay, det virker (næsten) hvis laver laver en ned funktion, og bruger pluds virker det.

Problemet er at nr-1 ikke findes, når den første er flyttet, finder der en måde at gemme værdien på ?
Avatar billede busschou Praktikant
15. april 2005 - 12:58 #8
jamen jeg kom vist også til at slette den linje i sidste indlæg
function op()
{
  var nr = document.dbListForm.dbList.selectedIndex;
  var valgt = document.dbListForm.dbList.options[nr]
  var oppe = document.dbListForm.dbList.options[nr-1]
  document.dbListForm.dbList.options[nr] = oppe
  document.dbListForm.dbList.options[nr-1] = valgt
}
Avatar billede hyberpreprocessor Nybegynder
15. april 2005 - 13:08 #9
jo, men den havde jeg regnet ud , og kopieret med :]

Det bytter plads med den overover, men den overover forsvinder helt.
Avatar billede busschou Praktikant
15. april 2005 - 13:21 #10
sådan her...virker hos mig:o)
---
function op()
{
  var nr = document.dbListForm.dbList.selectedIndex;
  var valgt = document.dbListForm.dbList.options[nr].value
  var oppe = document.dbListForm.dbList.options[nr-1].value
  document.dbListForm.dbList.options[nr] = new Option(oppe);
  document.dbListForm.dbList.options[nr-1] = new Option(valgt);
}
Avatar billede busschou Praktikant
15. april 2005 - 13:22 #11
Så må det tilsvarende kunne laves for ned funktionen
Det virker dog kun hvis der markeres eet element
Avatar billede hyberpreprocessor Nybegynder
15. april 2005 - 13:32 #12
nice :D det skal også kun virker med et element af gangen

Mange tak, lægger du også lige et svar, så er der points
Avatar billede busschou Praktikant
15. april 2005 - 13:34 #13
yes selvfølgelig :o)
Avatar billede roenving Novice
15. april 2005 - 14:32 #14
-- og jeg kom til at tænke på, om det ikke var smart at bruge removeChild til operationen, og det fungerer perfekt (men jeg kunne ikke dy mig for at implementere den fulde funktionalitet !-)

<script type="text/javascript">
function move(elm,dir){
  if(typeof elm == 'string');
    elm = document.getElementById(elm);
  var num = elm.selectedIndex;
  if(num == -1){
    alert('No selection');
    return;
  }
  if(dir=='up' && num==0 || dir=='down' && num==(elm.length-1))return;
  if(dir=='add'){
    var txt = prompt('Text for the option','Text');
    var val = prompt('Value for the option','Value');
    if(txt == "" && val == "" || txt == 'Text' && val == 'Value'){
      alert('You must supply at least a value or a text !-)');
      return;
    }
    if(txt == "" || txt == 'Text')
      txt = val;
    if(val == "" || val == 'Value')
      val = txt;
    var opt = new Option(txt,val);
      elm.insertBefore(opt,elm.options[num]);
    opt.text = txt;
    return;
  }
  var opt = elm.removeChild(elm.options[num]);
  if(dir=='remove')return;
  if(dir=='up')
    elm.insertBefore(opt,elm.options[num-1]);
  else
    elm.insertBefore(opt,elm.options[num+1]);
}
</script>

<select id="valgSelect" multiple="multiple" size="10" onchange="/*alert(this.value);*/" style="float:left;">
  <option>-- Vælg --</option>
  <option value="nr1">Option 1</option>
  <option value="nr2">Option 2</option>
  <option value="nr3">Option 3</option>
  <option value="nr4">Option 4</option>
  <option value="nr5">Option 5</option>
  <option value="nr6">Option 6</option>
  <option value="nr7">Option 7</option>
  <option value="nr8">Option 8</option>
  <option value="nr9">Option 9</option>
</select>
<span>
  <button onclick="move('valgSelect','up');" title="Move up">^</button><br>
  <button onclick="move('valgSelect','remove');" title="Remove">÷</button><br>
  <button onclick="move('valgSelect','add');" title="Add before">+</button><br>
  <button onclick="move('valgSelect','down');" title="Move down">v</button>
</span>
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