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

Commit b5eb4a0

Browse files
committed
Rebuilt release code.
Updated demo.
1 parent 9254b29 commit b5eb4a0

File tree

4 files changed

+39
-15
lines changed

4 files changed

+39
-15
lines changed

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)