diff options
author | Michael Bensoussan <pada51@gmail.com> | 2011-09-29 12:28:16 +0200 |
---|---|---|
committer | Michael Bensoussan <pada51@gmail.com> | 2011-09-29 12:28:16 +0200 |
commit | 4a468239face55202f9c1fb7dbbbba453f894519 (patch) | |
tree | a6e0cc12269e5a562b9fdde0c8a329a504ec22f4 /js/jquery.multi-select.js | |
parent | 2168a06162cdeb1f3224bbb4d2a2ea4651441803 (diff) | |
download | multi-select-4a468239face55202f9c1fb7dbbbba453f894519.zip multi-select-4a468239face55202f9c1fb7dbbbba453f894519.tar.gz multi-select-4a468239face55202f9c1fb7dbbbba453f894519.tar.bz2 |
initial commit for keepOrder option - buggy
Diffstat (limited to 'js/jquery.multi-select.js')
-rw-r--r-- | js/jquery.multi-select.js | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/js/jquery.multi-select.js b/js/jquery.multi-select.js index b6c91b0..1e7c542 100644 --- a/js/jquery.multi-select.js +++ b/js/jquery.multi-select.js @@ -3,12 +3,18 @@ 'init' : function(options){ this.settings = { disabledClass : 'disabled', - emptyArray : false + emptyArray : false, + keepOrder : false }; if(options) { this.settings = $.extend(this.settings, options); } + if (this.settings.keepOrder) { + console.log(this.settings.keepOrder); + console.log(this); + } + var multiSelects = this; multiSelects.hide(); @@ -109,7 +115,35 @@ selectedLi.click(function(){ ms.multiSelect('deselect', $(this).attr('ms-value')); }); - selectedUl.append(selectedLi); + + var selectedUlLis = selectedUl.children('.ms-elem-selected'); + console.log(ms.data('settings').keepOrder); + if (method != 'init' && ms.data('settings').keepOrder && + selectedUlLis.length > 0) { + + var getIndexOf = function(value) { + return($.inArray(value, + $.map($("#ms-simpleCountries .ms-elem-selectable"), function(e, i){ + return($(e).attr("ms-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'); } |