Skip to content

Commit 082a1b2

Browse files
committed
Trigger the onChange event only when the value has changed. Fixes #118
1 parent 2de7340 commit 082a1b2

File tree

5 files changed

+20
-9
lines changed

5 files changed

+20
-9
lines changed

public/index.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,9 @@ <h4><a href="./demo.html">view more advanced demos and customization →</a></h4
627627
});
628628

629629
$('select').selectric();
630+
$('select').on('change', function() {
631+
console.log('Change: ', this, $(this).val());
632+
});
630633
});
631634

632635
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

public/jquery.selectric.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -859,19 +859,19 @@
859859
_this.state.currValue = _this.state.selectedIdx;
860860

861861
_this.setLabel();
862-
}
863862

864-
if ( _this.state.currValue !== _this.state.selectedIdx && !_this.state.multiple ) {
863+
_this.utils.triggerCallback('Change', _this);
864+
} else if ( _this.state.currValue !== _this.state.selectedIdx ) {
865865
// Apply changed value to original select
866866
_this.$element
867867
.prop('selectedIndex', _this.state.currValue = _this.state.selectedIdx)
868868
.data('value', _this.lookupItems[_this.state.selectedIdx].text);
869869

870870
// Change label text
871871
_this.setLabel();
872-
}
873872

874-
_this.utils.triggerCallback('Change', _this);
873+
_this.utils.triggerCallback('Change', _this);
874+
}
875875
},
876876

877877
/**

public/jquery.selectric.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.

src/jquery.selectric.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -842,19 +842,19 @@
842842
_this.state.currValue = _this.state.selectedIdx;
843843

844844
_this.setLabel();
845-
}
846845

847-
if ( _this.state.currValue !== _this.state.selectedIdx && !_this.state.multiple ) {
846+
_this.utils.triggerCallback('Change', _this);
847+
} else if ( _this.state.currValue !== _this.state.selectedIdx ) {
848848
// Apply changed value to original select
849849
_this.$element
850850
.prop('selectedIndex', _this.state.currValue = _this.state.selectedIdx)
851851
.data('value', _this.lookupItems[_this.state.selectedIdx].text);
852852

853853
// Change label text
854854
_this.setLabel();
855-
}
856855

857-
_this.utils.triggerCallback('Change', _this);
856+
_this.utils.triggerCallback('Change', _this);
857+
}
858858
},
859859

860860
/**

test/events.spec.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ describe('events', function() {
1919
expect(changedFn).toHaveBeenCalled();
2020
});
2121

22+
it('should not trigger change event', function() {
23+
var notChangedFn = jasmine.createSpy('notChangedFn');
24+
select.on('change', notChangedFn);
25+
$('.selectric').click();
26+
$('.selectric-items').find('li.selected').click();
27+
expect(notChangedFn).not.toHaveBeenCalled();
28+
});
29+
2230
it('should trigger events', function() {
2331
var events = jasmine.createSpyObj('events', [
2432
'beforeInit',

0 commit comments

Comments
 (0)