Skip to content

Commit 3bb3453

Browse files
committed
improve blur handling and add option
1 parent 4436954 commit 3bb3453

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

src/defaults.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Selectize.defaults = {
2121
preload: false,
2222
allowEmptyOption: false,
2323
closeAfterSelect: false,
24+
blurAfterClose: false,
2425

2526
scrollDuration: 60,
2627
loadThrottle: 300,

src/selectize.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1745,7 +1745,9 @@ $.extend(Selectize.prototype, {
17451745

17461746
self.isOpen = false;
17471747
self.$dropdown.hide();
1748-
self.$control_input.blur(); // close keyboard on iOS
1748+
if (self.settings.blurAfterClose) {
1749+
self.$control_input.blur(); // close keyboard on iOS
1750+
}
17491751
self.setActiveOption(null);
17501752
self.refreshState();
17511753

test/interaction.js

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,34 @@
2929

3030
it('should close dropdown after selection made if closeAfterSelect: true', function(done) {
3131
var test = setup_test('<select multiple>' +
32-
'<option value="a">A</option>' +
33-
'<option value="b">B</option>' +
32+
'<option value="a">A</option>' +
33+
'<option value="b">B</option>' +
3434
'</select>', {closeAfterSelect: true});
3535

36-
click(test.selectize.$control, function() {
37-
click($('[data-value=a]', test.selectize.$dropdown_content), function() {
38-
expect(test.selectize.isOpen).to.be.equal(false);
39-
expect(test.selectize.isFocused).to.be.equal(true);
40-
done();
41-
});
36+
click(test.selectize.$control, function() {
37+
click($('[data-value=a]', test.selectize.$dropdown_content), function() {
38+
expect(test.selectize.isOpen).to.be.equal(false);
39+
expect(test.selectize.isFocused).to.be.equal(true);
40+
done();
41+
});
42+
});
43+
});
44+
45+
it('should close dropdown after selection made if closeAfterSelect: true and blurAfterClose: true', function(done) {
46+
var test = setup_test('<select multiple>' +
47+
'<option value="a">A</option>' +
48+
'<option value="b">B</option>' +
49+
'</select>', {closeAfterSelect: true, blurAfterClose: true});
50+
51+
click(test.selectize.$control, function() {
52+
expect(test.selectize.isOpen).to.be.equal(true);
53+
expect(test.selectize.isFocused).to.be.equal(true);
54+
click($('[data-value=a]', test.selectize.$dropdown_content), function() {
55+
expect(test.selectize.isOpen).to.be.equal(false);
56+
expect(test.selectize.isFocused).to.be.equal(false);
57+
done();
4258
});
59+
});
4360
});
4461

4562
describe('clicking control', function() {

0 commit comments

Comments
 (0)