Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Commit 39d9b42

Browse files
committed
* Added boolean value to onChange event handler to indicate whether the requirements have been met or not.
* Some code cleanup. * Updated demo.
1 parent 0d69de0 commit 39d9b42

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

demo.html

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,11 @@ <h6>Code</h6>
107107
requires: ['.step1', '.step2'],
108108
onChange: function(event, value, requiredValues) {
109109
// do stuff
110+
111+
// event is the change event object for the current dropdown
110112
// value is the current dropdown value
111113
// requiredValues is an object with required dropdown values
114+
// requirementsMet is a boolean value to indicate if all requirements (including current dropdown having a value) have been met
112115
}
113116
}
114117
]
@@ -191,7 +194,7 @@ <h6>Code</h6>
191194
}));
192195
});
193196
},
194-
onChange: function(event, value, requiredValues){
197+
onChange: function(event, value, requiredValues, requirementsMet){
195198
// do stuff
196199
}
197200
}
@@ -307,7 +310,9 @@ <h6>Code</h6>
307310
{
308311
selector: '.step3',
309312
requires: ['.step1', '.step2'],
310-
onChange: function(event, value, requiredValues) {
313+
onChange: function(event, value, requiredValues, requirementsMet) {
314+
if(!requirementsMet) return;
315+
311316
example1.loading(true);
312317

313318
var ajaxData = requiredValues;
@@ -359,7 +364,9 @@ <h6>Code</h6>
359364
}));
360365
});
361366
},
362-
onChange: function(event, value, requiredValues) {
367+
onChange: function(event, value, requiredValues, requirementsMet) {
368+
if(!requirementsMet) return;
369+
363370
example2.loading(true);
364371

365372
var ajaxData = requiredValues;

jquery.cascadingdropdown.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* jQuery Cascading Dropdown Plugin 1.2.3
2+
* jQuery Cascading Dropdown Plugin 1.2.4
33
* https://github.com/dnasir/jquery-cascading-dropdown
44
*
55
* Copyright 2013, Dzulqarnain Nasir
@@ -40,7 +40,8 @@
4040
// Init event handlers
4141
if(typeof self.options.onChange === 'function') {
4242
self.el.change(function(event) {
43-
self.options.onChange.call(self, event, self.el.val(), self.getRequiredValues());
43+
var requirementsMet = self._requirementsMet() && self.el[0].value;
44+
self.options.onChange.call(self, event, self.el.val(), self.getRequiredValues(), requirementsMet);
4445
});
4546
}
4647

@@ -166,12 +167,7 @@
166167
}
167168

168169
// Reset the dropdown value so we don't trigger a false call
169-
var firstItem = self.el.children('option')[0];
170-
if(firstItem && firstItem.value === '') {
171-
self.setSelected(0);
172-
} else {
173-
self.el.val('').change();
174-
}
170+
self.el.val('').change();
175171

176172
// Fetch data from required dropdowns
177173
var data = self.getRequiredValues();
@@ -235,7 +231,7 @@
235231
_triggerReady: function() {
236232
if(!this.initialised) {
237233
this.initialised = true;
238-
this.el.trigger('ready');
234+
this.el.triggerHandler('ready');
239235
}
240236
},
241237

0 commit comments

Comments
 (0)