diff options
Diffstat (limited to 'public/javascripts')
-rw-r--r-- | public/javascripts/select_list_move.js | 98 |
1 files changed, 10 insertions, 88 deletions
diff --git a/public/javascripts/select_list_move.js b/public/javascripts/select_list_move.js index a5687981f..d542ac624 100644 --- a/public/javascripts/select_list_move.js +++ b/public/javascripts/select_list_move.js @@ -1,105 +1,27 @@ -var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5); - -function addOption(theSel, theText, theValue) { - var newOpt = new Option(theText, theValue); - var selLength = theSel.length; - theSel.options[selLength] = newOpt; -} - -function swapOptions(theSel, index1, index2) { - var text, value, selected; - text = theSel.options[index1].text; - value = theSel.options[index1].value; - selected = theSel.options[index1].selected; - theSel.options[index1].text = theSel.options[index2].text; - theSel.options[index1].value = theSel.options[index2].value; - theSel.options[index1].selected = theSel.options[index2].selected; - theSel.options[index2].text = text; - theSel.options[index2].value = value; - theSel.options[index2].selected = selected; -} - -function deleteOption(theSel, theIndex) { - var selLength = theSel.length; - if (selLength > 0) { - theSel.options[theIndex] = null; - } -} - function moveOptions(theSelFrom, theSelTo) { - var selLength = theSelFrom.length; - var selectedText = new Array(); - var selectedValues = new Array(); - var selectedCount = 0; - var i; - for (i = selLength - 1; i >= 0; i--) { - if (theSelFrom.options[i].selected) { - selectedText[selectedCount] = theSelFrom.options[i].text; - selectedValues[selectedCount] = theSelFrom.options[i].value; - deleteOption(theSelFrom, i); - selectedCount++; - } - } - for (i = selectedCount - 1; i >= 0; i--) { - addOption(theSelTo, selectedText[i], selectedValues[i]); - } - if (NS4) history.go(0); + $(theSelFrom).find('option:selected').detach().prop("selected", false).appendTo($(theSelTo)); } function moveOptionUp(theSel) { - var indexTop = 0; - for(var s=0; s<theSel.length; s++) { - if (theSel.options[s].selected) { - if (s > indexTop) { - swapOptions(theSel, s-1, s); - } - indexTop++; - } - } + $(theSel).find('option:selected').each(function(){ + $(this).prev(':not(:selected)').detach().insertAfter($(this)); + }); } function moveOptionTop(theSel) { - var indexTop = 0; - for(var s=0; s<theSel.length; s++) { - if (theSel.options[s].selected) { - if (s > indexTop) { - for (var i=s; i>indexTop; i--) { - swapOptions(theSel, i-1, i); - } - } - indexTop++; - } - } + $(theSel).find('option:selected').detach().prependTo($(theSel)); } function moveOptionDown(theSel) { - var indexBottom = theSel.length - 1; - for(var s=indexBottom; s>=0; s--) { - if (theSel.options[s].selected) { - if (s < indexBottom) { - swapOptions(theSel, s+1, s); - } - indexBottom--; - } - } + $($(theSel).find('option:selected').get().reverse()).each(function(){ + $(this).next(':not(:selected)').detach().insertBefore($(this)); + }); } function moveOptionBottom(theSel) { - var indexBottom = theSel.length - 1; - for(var s=indexBottom; s>=0; s--) { - if (theSel.options[s].selected) { - if (s < indexBottom) { - for (i=s; i<indexBottom; i++) { - swapOptions(theSel, i+1, i); - } - } - indexBottom--; - } - } + $(theSel).find('option:selected').detach().appendTo($(theSel)); } -// OK function selectAllOptions(id) { - var select = $('#'+id); - select.children('option').attr('selected', true); + $('#'+id).find('option').prop('selected', true); } |