diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-11-18 21:44:45 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-11-18 21:44:45 +0000 |
commit | 8b6939e2f40f391df59a2a67475909fcd2828d04 (patch) | |
tree | 47ee1214637881986446d8bc1deda8376ad6d1d8 | |
parent | 08bae5928a901ce68a4effe5ff140563798334d2 (diff) | |
download | redmine-8b6939e2f40f391df59a2a67475909fcd2828d04.tar.gz redmine-8b6939e2f40f391df59a2a67475909fcd2828d04.zip |
Rewritten select_list_move.js functions with JQuery.
git-svn-id: http://svn.redmine.org/redmine/trunk@13615 e93f8b46-1217-0410-a6f0-8f06a7374b81
-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); } |