diff --git a/src/selectize.js b/src/selectize.js index b6c998d30..4abc3595b 100644 --- a/src/selectize.js +++ b/src/selectize.js @@ -106,6 +106,7 @@ $.extend(Selectize.prototype, { var tab_index; var classes; var classes_plugins; + var inputId; inputMode = self.settings.mode; tab_index = $input.attr('tabindex') || ''; @@ -118,6 +119,11 @@ $.extend(Selectize.prototype, { $dropdown = $('
').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent); $dropdown_content = $('
').addClass(settings.dropdownContentClass).appendTo($dropdown); + if(inputId = $input.attr('id')) { + $control_input.attr('id', inputId + '_selectized'); + $('label[for='+inputId+']').attr('for', inputId + '_selectized'); + } + if(self.settings.copyClassesToDropdown) { $dropdown.addClass(classes); } diff --git a/test/interaction.js b/test/interaction.js index 9d08fc1fd..250ff7a24 100644 --- a/test/interaction.js +++ b/test/interaction.js @@ -41,6 +41,45 @@ }); + describe('clicking label', function() { + + it('should give it focus to select', function(done) { + var inputId = "labeledSelect"; + $('#fixture').append(''); + var label = $('label[for="'+inputId+'"]'); + + var test = setup_test('', {}); + + Syn + .click(label) + .delay(0, function() { + label.remove(); + expect(test.selectize.isFocused).to.be.equal(true); + done(); + }); + }); + + it('should give it focus to input', function(done) { + var inputId = "labeledInput"; + $('#fixture').append(''); + var label = $('label[for="'+inputId+'"]'); + + var test = setup_test('', {}); + + Syn + .click(label) + .delay(0, function() { + label.remove(); + expect(test.selectize.isFocused).to.be.equal(true); + done(); + }); + }); + + }); + describe('clicking option', function() { it('should select it', function(done) { @@ -237,7 +276,7 @@ expect(selectize.getItem(text).length).to.be.equal(0); expect($(selectize.$dropdown_content).filter('.create').length).to.be.equal(0); }); - }); + }); });