summaryrefslogtreecommitdiffstats
path: root/js/jquery.multi-select.js
diff options
context:
space:
mode:
authorlou <louiscuny@gmail.com>2011-10-03 18:02:24 +0200
committerlou <louiscuny@gmail.com>2011-10-03 18:02:24 +0200
commit7a5fb895360046220e3bc5a8e13701a1b7840b42 (patch)
treef02a55d1a1d33502b23aad5e453f6c6fe3f4e7d9 /js/jquery.multi-select.js
parent700e64026b151fe646dbcba5b38629153e451bef (diff)
parentdbb61993dd1a1ec495d41a2faaa7eaadcaa4e5f5 (diff)
downloadmulti-select-7a5fb895360046220e3bc5a8e13701a1b7840b42.zip
multi-select-7a5fb895360046220e3bc5a8e13701a1b7840b42.tar.gz
multi-select-7a5fb895360046220e3bc5a8e13701a1b7840b42.tar.bz2
Merge branch 'master' into callbackOnInit
Conflicts: js/jquery.multi-select.js
Diffstat (limited to 'js/jquery.multi-select.js')
-rw-r--r--js/jquery.multi-select.js36
1 files changed, 35 insertions, 1 deletions
diff --git a/js/jquery.multi-select.js b/js/jquery.multi-select.js
index 1127d16..bb69c08 100644
--- a/js/jquery.multi-select.js
+++ b/js/jquery.multi-select.js
@@ -1,3 +1,13 @@
+/*
+* MultiSelect v0.2
+* Copyright (c) 2011 Louis Cuny
+*
+* Dual licensed under the MIT and GPL licenses:
+* http://www.opensource.org/licenses/mit-license.php
+* http://www.gnu.org/licenses/gpl.html
+*
+*/
+
(function($){
var msMethods = {
'init' : function(options){
@@ -5,6 +15,7 @@
disabledClass : 'disabled',
emptyArray : false,
callbackOnInit: false
+ keepOrder : false
};
if(options) {
this.settings = $.extend(this.settings, options);
@@ -110,7 +121,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');
}