webForumDet fria alternativet

Flytta text från lista till lista

JavaScriptur Javascript

25 svar · 666 visningar · startad av learn · sida 2 av 2

Frågan, av learn

Jag skulle vilja att detta skript fungerar så att när man endast behöver klicka på den text man vill flytta och slippa klicka på länken. Det funkar att ju i FF att göra så här: <option value="1" onClick="selectMoveSelected(document.myForm.selectlist,document.myForm.selectlistb); return false;">Val 1</option> Men detta funkar ju inte

Läs frågan i sin helhet →
Medlem sedan jan. 20051 130 inlägg
#21

Klickedeklick...

fel3.jpg
Medlem sedan dec. 20025 483 inlägg
#22

Nu får i alla fall inte jag samma resultat som du; i varken IE, FF eller Opera.

Men; du kan ju ändra updateSelect() till

function updateSelect(sel,arr){
  for (var i = 0; i < arr.length; ++i){
    sel.options[sel.options.length] = arr[i];
    sel.options[sel.options.length - 1].selected = false;
  }
}

...för att undvika att elementen blir valda vid överflyttning.

Medlem sedan jan. 20051 130 inlägg
#23

Oh, ett litet slarvfel bara... Nu funkar det, pusst! :e

Om jag nu skulle vilja kunna flytta över alla med ett klick på en länk (både fram och tillbaka), hur skulle dessa länkar se ut? :)

Medlem sedan dec. 20025 483 inlägg
#24
<form name="myForm">
<select size="7" onclick="setTimeout(function(){selectMoveSelected(document.myForm.selectlist,document.myForm.selectlistb)},1)" name="selectlist" size="4" multiple style="width:100px;">
<option value="1">Val 1</option>
<option value="2">Val 2</option>
<option value="3">Val 3</option>
<option value="4">Val 4</option>
<option value="5">Val 5</option>
<option value="6">Val 6</option>
<option value="7">Val 7</option>
</select>
<select size="7" onclick="setTimeout(function(){selectMoveSelected(document.myForm.selectlistb,document.myForm.selectlist)},1)" name="selectlistb" size="4" multiple style="width:100px;"></select>
<button type="button" onclick="moveOptions(document.myForm.selectlist,document.myForm.selectlistb)">Move all</button>
</form>

<script>
function moveOptions(s1,s2){
  var sel = s1.options.length ? s1 : s2,
      arr = [];

  for (var i = 0; i < sel.options.length; ++i){
    arr.push(sel.options[i]);
  }

  sel.options.length = 0;

  sel = sel == s1 ? s2 : s1;

  for (var i = 0; i < arr.length; ++i){
    sel.options[sel.options.length] = arr[i];
  }
}

function selectMoveSelected(from,to){
  var tArr = [from.options[from.selectedIndex]],
      fArr = [];
  for (var i = 0; i < from.length; ++i){
    if (!from.options[i].selected){ fArr.push(from.options[i]); }
  }

  from.options.length = 0;

  updateSelect(from,fArr);

  for (var i = 0; i < to.length; ++i){
    tArr.push(to.options[i]);
  }

  to.options.length = 0;

  tArr.sort(function(a,b){
    if (b.text < a.text){ return 1 }
    if (b.text > a.text){ return -1 }
    return 0;
  });

  updateSelect(to,tArr);
}

function updateSelect(sel,arr){
  for (var i = 0; i < arr.length; ++i){
    sel.options[sel.options.length] = arr[i];
    sel.options[sel.options.length - 1].selected = false;
  }
}
</script>

:)

Medlem sedan jan. 20051 130 inlägg
#25

Prima! Tack för all din hjälp Peter!!

Medlem sedan dec. 20025 483 inlägg
#26

Vassego! :bire

136 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)