How Can I Move Selected Option In Multiselect Up And Down By Buttons Using Jquery? April 27, 2023 Post a Comment I have select 1 2 3< Solution 1: Update: Fixed code for multiple options selected, based on @patrick dw's suggestion. $(document).ready(function(){ $('input[type="button"]').click(function(){ var $op = $('#select2 option:selected'), $this = $(this); if($op.length){ ($this.val() == 'Up') ? $op.first().prev().before($op) : $op.last().next().after($op); } }); }); Copy Test it here » No need to use inline onclick="" event listeners. jQuery takes full control of separating presentation from functionality. Solution 2: if you do not use jquery function moveUp(){ var select = document.getElementById("columnOrder"); var options = select && select.options; var selected = []; for (var i = 0, iLen = options.length; i < iLen; i++) { if (options[i].selected) { selected.push(options[i]); } } for (i = 0, iLen = selected.length; i < iLen; i++) { var index = selected[i].index; if(index == 0){ break; } var temp = selected[i].text; selected[i].text = options[index - 1].text; options[index - 1].text = temp; temp = selected[i].value; selected[i].value = options[index - 1].value; options[index - 1].value = temp; selected[i].selected = false; options[index - 1].selected = true; } } function moveDown(){ var select = document.getElementById("columnOrder"); var options = select && select.options; var selected = []; for (var i = 0, iLen = options.length; i < iLen; i++) { if (options[i].selected) { selected.push(options[i]); } } for (i = selected.length - 1, iLen = 0; i >= iLen; i--) { var index = selected[i].index; if(index == (options.length - 1)){ break; } var temp = selected[i].text; selected[i].text = options[index + 1].text; options[index + 1].text = temp; temp = selected[i].value; selected[i].value = options[index + 1].value; options[index + 1].value = temp; selected[i].selected = false; options[index + 1].selected = true; } } Copy Solution 3: function up() { var selected = $("#select2").find(":selected"); var before = selected.prev(); if (before.length > 0) selected.detach().insertBefore(before); } function down() { var selected = $("#select2").find(":selected"); var next = selected.next(); if (next.length > 0) selected.detach().insertAfter(next); } Copy Solution 4: I created a jquery plugin for this: https://github.com/UziTech/jquery.moveSelected.js usage: $("button#up").click(function(){ $("select").moveSelectedUp(); }); $("button#down").click(function(){ $("select").moveSelectedDown(); }); Copy http://jsfiddle.net/UziTech/qr5qfhgg/ Solution 5: here is the same idea as the previously-posted non-jquery example, but with some strategic code re-use. My need was to have the buttons always operate on the same select element, named "cols". You could put "sel" as a parameter of the moveUp() and moveDown() functions if you want something more generic. function moveUp() { var sel = document.getElementById("cols"); var i1=0, i2=1; while (i2 < sel.options.length) { swapIf(sel,i1++,i2++); } } function moveDown() { var sel = document.getElementById("cols"); var i1=sel.options.length-1, i2=i1-1; while (i1 > 0) { swapIf(sel,i1--,i2--); } } var swapVar = ''; function swapIf(sel,i1,i2) { if ( ! sel[i1].selected && sel[i2].selected) { swapVar = sel[i2].text; sel[i2].text = sel[i1].text; sel[i1].text = swapVar; swapVar = sel[i2].value; sel[i2].value = sel[i1].value; sel[i1].value = swapVar; sel[i1].selected = true; sel[i2].selected = false; } } Copy Share Post a Comment for "How Can I Move Selected Option In Multiselect Up And Down By Buttons Using Jquery?" Top Question How Do I Know If The Mouse Pointer Is On The Html Element? I have a timed event I want to behave differently according… Getting The Value Of A Div Tag's Special Attribute If next command: console.log(document.getElementById('… Mysql Insert Submit Button Php I am generating a list of images and looking to insert a sp… How To Avoid Breaking Javascript When "match" Has No Matches? I have the following html: this is some text and here is D… Keyframe Animation Back To Initial State I did a slow infinite CSS3 animation. It animates from top:… Replace The Div Content With Ajax I am trying to replace the div content dynamically ajax cal… How To Make Printable Version Of A Webpage? I would like to make a printable version of my web page. I … Links Are Not Working While Using Css I've faced a problem which I couldn't solve by Goog… Defined Function Is "Not Defined" The following function is defined in the head tags of my pa… HTML5 How To Tell When IndexedDB Cursor Is At End I am iterating thru an indexedDB data store, adding data to… December 2024 (1) November 2024 (37) October 2024 (59) September 2024 (19) August 2024 (353) July 2024 (332) June 2024 (678) May 2024 (1286) April 2024 (789) March 2024 (1553) February 2024 (1717) January 2024 (1411) December 2023 (1435) November 2023 (424) October 2023 (654) September 2023 (325) August 2023 (342) July 2023 (277) June 2023 (345) May 2023 (224) April 2023 (139) March 2023 (147) February 2023 (178) January 2023 (254) December 2022 (127) November 2022 (235) October 2022 (827) September 2022 (158) August 2022 (283) July 2022 (93) Menu Halaman Statis Beranda © 2022 - Html5 Works