summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorlouis cuny <louiscuny@gmail.com>2011-10-01 12:54:05 -0700
committerlouis cuny <louiscuny@gmail.com>2011-10-01 12:54:05 -0700
commitdbb61993dd1a1ec495d41a2faaa7eaadcaa4e5f5 (patch)
tree8b2863758b406f7cd8d3d1db01d2c470f57f61e7 /js
parenta6918a1d21f4c4af783987f9e9ca85978e578b0f (diff)
parentd0ba9f92ddfe194c402123a0b67341021450d244 (diff)
downloadmulti-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.js2
-rw-r--r--js/jquery.multi-select.js28
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');
}