|
215 | 215 | return;
|
216 | 216 | }
|
217 | 217 |
|
218 |
| - var selected; |
| 218 | + var selected = []; |
219 | 219 |
|
220 | 220 | // Add all items as dropdown item
|
221 | 221 | var getOption = function(item) {
|
222 | 222 | var selectedAttr = '';
|
223 | 223 | if(item.selected) {
|
224 |
| - selected = item; |
| 224 | + selected.push(item.value.toString()); |
225 | 225 | }
|
226 | 226 |
|
227 | 227 | return '<option value="' + item.value + '"' + selectedAttr + '>' + item.label + '</option>';
|
|
248 | 248 | self.enable();
|
249 | 249 |
|
250 | 250 | // If a selected item exists, set it as default
|
251 |
| - selected && self.setSelected(selected.value.toString()); |
| 251 | + selected.length && self.setSelected(selected); |
252 | 252 |
|
253 | 253 | self._triggerReady();
|
254 | 254 | },
|
|
273 | 273 | if(typeof triggerChange === 'undefined') {
|
274 | 274 | triggerChange = true;
|
275 | 275 | }
|
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); |
280 | 284 | }
|
281 | 285 |
|
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 | + }); |
286 | 298 |
|
| 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 | + |
287 | 311 | // Set the dropdown item
|
288 |
| - self.el[0].selectedIndex = indexOrValue; |
| 312 | + self.el.val(selectedValue); |
289 | 313 |
|
290 | 314 | // Trigger change event
|
291 | 315 | if(triggerChange) {
|
|
0 commit comments