Klickedeklick...
Flytta text från lista till lista
25 svar · 676 visningar · startad av learn · sida 2 av 2
Trådstarten, 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 hela trådstarten →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.
Oh, ett litet slarvfel bara... Nu funkar det, pusst!
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?
<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>
Prima! Tack för all din hjälp Peter!!
Vassego!
