Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Commit ba53523

Browse files
committed
Merge pull request #54 from dnasir/Issue#50
Issue#50
2 parents 6e5f9cd + 4a3abb0 commit ba53523

File tree

6 files changed

+86
-30
lines changed

6 files changed

+86
-30
lines changed

bower.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
"Dzulqarnain Nasir <[email protected]>"
77
],
88
"description": "A simple and lighweight jQuery plugin for creating cascading dropdowns.",
9-
"main": "dist/jquery.cascadingdropdown.js",
9+
"main": [
10+
"dist/jquery.cascadingdropdown.js",
11+
"dist/jquery.cascadingdropdown.min.js",
12+
"dist/jquery.cascadingdropdown.min.js.map"
13+
],
1014
"keywords": [
1115
"jquery",
1216
"cascading",
@@ -20,6 +24,6 @@
2024
"bower_components"
2125
],
2226
"dependencies": {
23-
"jquery": "~1.11.2"
27+
"jquery": "^1.11.2"
2428
}
2529
}

dist/jquery.cascadingdropdown.js

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -215,13 +215,13 @@
215215
return;
216216
}
217217

218-
var selected;
218+
var selected = [];
219219

220220
// Add all items as dropdown item
221221
var getOption = function(item) {
222222
var selectedAttr = '';
223223
if(item.selected) {
224-
selected = item;
224+
selected.push(item.value.toString());
225225
}
226226

227227
return '<option value="' + item.value + '"' + selectedAttr + '>' + item.label + '</option>';
@@ -248,7 +248,7 @@
248248
self.enable();
249249

250250
// If a selected item exists, set it as default
251-
selected && self.setSelected(selected.value.toString());
251+
selected.length && self.setSelected(selected);
252252

253253
self._triggerReady();
254254
},
@@ -273,19 +273,43 @@
273273
if(typeof triggerChange === 'undefined') {
274274
triggerChange = true;
275275
}
276-
277-
// If given value is a string, get the index where it appears in the dropdown
278-
if(typeof indexOrValue === 'string') {
279-
indexOrValue = dropdownItems.index(dropdownItems.filter(function() { return this.value === indexOrValue; })[0]);
276+
277+
var selectedItems = [];
278+
279+
// check if indexOrValue is an array
280+
if($.isArray(indexOrValue)) {
281+
selectedItems = indexOrValue;
282+
} else {
283+
selectedItems = selectedItems.concat(indexOrValue);
280284
}
281285

282-
// If index is undefined or out of bounds, do nothing
283-
if(indexOrValue === undefined || indexOrValue < 0 || indexOrValue > dropdownItems.length) {
284-
return;
285-
}
286+
var selectedValue;
287+
if(self.el.is('[multiple]')) {
288+
selectedValue = selectedItems.map(function(item) {
289+
if(typeof item === 'number'
290+
&& (item !== undefined
291+
&& item > -1
292+
&& item < dropdownItems.length)) {
293+
return dropdownItems[item].value
294+
}
295+
296+
return item;
297+
});
286298

299+
} else {
300+
selectedValue = selectedItems[0];
301+
302+
// if selected item is a number, get the value for the item at that index
303+
if(typeof selectedItems[0] === 'number'
304+
&& (selectedItems[0] !== undefined
305+
&& selectedItems[0] > -1
306+
&& selectedItems[0] < dropdownItems.length)) {
307+
selectedValue = dropdownItems[selectedItems[0]].value;
308+
}
309+
}
310+
287311
// Set the dropdown item
288-
self.el[0].selectedIndex = indexOrValue;
312+
self.el.val(selectedValue);
289313

290314
// Trigger change event
291315
if(triggerChange) {

dist/jquery.cascadingdropdown.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)