Skip to content

Commit 6bb4c96

Browse files
committed
version 2.1.0 - autoSelectSingleOptions option added, documented, tested
1 parent 3c85ddf commit 6bb4c96

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@
3030
## 2.0.2
3131

3232
- Added possibility to append extra CSS classes to used/generated select elements through option 'selectCssClass'
33+
34+
## 2.1.0
35+
36+
Added option `autoSelectSingleOptions` to allow automatic pre-selection of option if there is only single one (works recursively)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ $("#select-id").chainedSelects({
4646
sortByValue: false, // sort options by text value, defaults to `false`
4747
// IMPORTANT: if provided callback function fails, it will not report caught error if the `loggingEnabled` is not `true`
4848
onSelectedCallback: function(id){}, // will call user defined function with id of currently selected, or empty string if non-final option was chosen, defaults to `false`
49+
autoSelectSingleOptions: true, // will automatically select single options at any level (recursively), forcing user to make a choice only when there is choice to make, defaults to `false`
4950
});
5051
```
5152

jquery.chained.selects.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
defaultPath: false,
1212
sortByValue: false,
1313
onSelectedCallback: false,
14-
selectCssClass: false
14+
selectCssClass: false,
15+
autoSelectSingleOptions: false
1516
};
1617

1718
function ChainedSelect(element, options) {
@@ -91,7 +92,7 @@
9192
this.hideLevelsGreaterThan(sid, levelNum);
9293
let $level = this.getLevel(sid, levelNum);
9394
$level.empty();
94-
if(this.options.placeholder) {
95+
if (this.options.placeholder) {
9596
$level.append(new Option(this.options.placeholder ? this.options.placeholder : "", ""));
9697
}
9798
if ($.isFunction(data)) {
@@ -141,6 +142,12 @@
141142
}
142143
}
143144
}
145+
if (this.options.autoSelectSingleOptions === true) {
146+
let childrenCount = $level.children().length;
147+
if ((this.options.placeholder && childrenCount === 2) || (childrenCount === 1)) {
148+
$level.children().last().attr('selected', 'selected');
149+
}
150+
}
144151
$level.trigger('change');
145152
$level.show();
146153
},

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jquery-chained-selects",
3-
"version": "2.0.3",
3+
"version": "2.1.0",
44
"description": "jQuery plugin to create chained selects from JSON data",
55
"main": "jquery.chained.selects.js",
66
"scripts": {

0 commit comments

Comments
 (0)