Klickedeklick...
Flytta text från lista till lista
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 →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! :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? :)
<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! :bire
