diff options
author | louis cuny <louiscuny@gmail.com> | 2011-10-01 12:54:05 -0700 |
---|---|---|
committer | louis cuny <louiscuny@gmail.com> | 2011-10-01 12:54:05 -0700 |
commit | dbb61993dd1a1ec495d41a2faaa7eaadcaa4e5f5 (patch) | |
tree | 8b2863758b406f7cd8d3d1db01d2c470f57f61e7 /js | |
parent | a6918a1d21f4c4af783987f9e9ca85978e578b0f (diff) | |
parent | d0ba9f92ddfe194c402123a0b67341021450d244 (diff) | |
download | multi-select-dbb61993dd1a1ec495d41a2faaa7eaadcaa4e5f5.zip multi-select-dbb61993dd1a1ec495d41a2faaa7eaadcaa4e5f5.tar.gz multi-select-dbb61993dd1a1ec495d41a2faaa7eaadcaa4e5f5.tar.bz2 |
Merge pull request #12 from lou/keepOrder
Keep order
Diffstat (limited to 'js')
-rw-r--r-- | js/application.js | 2 | ||||
-rw-r--r-- | js/jquery.multi-select.js | 28 |
2 files changed, 28 insertions, 2 deletions
diff --git a/js/application.js b/js/application.js index 81a2fe6..d2dbaae 100644 --- a/js/application.js +++ b/js/application.js @@ -28,6 +28,8 @@ $('#simpleCountries').multiSelect({}); + $('#ikeeporder').multiSelect({ keepOrder: true }); + $('#empty-array-select').multiSelect({ emptyArray: true}) $('#callbackCountries').multiSelect({ diff --git a/js/jquery.multi-select.js b/js/jquery.multi-select.js index 7ed4e31..9858296 100644 --- a/js/jquery.multi-select.js +++ b/js/jquery.multi-select.js @@ -13,7 +13,8 @@ 'init' : function(options){ this.settings = { disabledClass : 'disabled', - emptyArray : false + emptyArray : false, + keepOrder : false }; if(options) { this.settings = $.extend(this.settings, options); @@ -119,7 +120,30 @@ selectedLi.click(function(){ ms.multiSelect('deselect', $(this).attr('ms-value')); }); - selectedUl.append(selectedLi); + + var selectedUlLis = selectedUl.children('.ms-elem-selected'); + if (method != 'init' && ms.data('settings').keepOrder && selectedUlLis.length > 0) { + + var getIndexOf = function(value) { + elems = selectableUl.children('.ms-elem-selectable'); + return(elems.index(elems.closest('[ms-value="'+value+'"]'))); + } + + var index = getIndexOf(selectedLi.attr('ms-value')); + if (index == 0) + selectedUl.prepend(selectedLi); + else { + for (i = index - 1; i >= 0; i--){ + if (selectedUlLis[i] && getIndexOf($(selectedUlLis[i]).attr('ms-value')) < index) { + $(selectedUlLis[i]).after(selectedLi); + break; + } + } + } + } else { + selectedUl.append(selectedLi); + } + if (ms.find("option[value='']")){ ms.find("option[value='']").removeAttr('selected'); } |