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

Commit ec8e4dd

Browse files
committed
Merge pull request #23 from dnasir/dev
Minor bug fixes
2 parents 406c489 + 39d9b42 commit ec8e4dd

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
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: 9 additions & 4 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

@@ -153,6 +154,7 @@
153154

154155
// If required dropdowns have no value, return
155156
if(!self._requirementsMet()) {
157+
self.setSelected(0);
156158
self._triggerReady();
157159
return self.el;
158160
}
@@ -164,6 +166,9 @@
164166
return self.el;
165167
}
166168

169+
// Reset the dropdown value so we don't trigger a false call
170+
self.el.val('').change();
171+
167172
// Fetch data from required dropdowns
168173
var data = self.getRequiredValues();
169174

@@ -226,7 +231,7 @@
226231
_triggerReady: function() {
227232
if(!this.initialised) {
228233
this.initialised = true;
229-
this.el.trigger('ready');
234+
this.el.triggerHandler('ready');
230235
}
231236
},
232237

@@ -242,7 +247,7 @@
242247

243248
// If given value is a string, get the index where it appears in the dropdown
244249
if(typeof indexOrValue === 'string') {
245-
indexOrValue = dropdownItems.index(dropdownItems.filter('[value="' + indexOrValue +'"]')[0]);
250+
indexOrValue = dropdownItems.index(dropdownItems.filter(function() { return this.value === indexOrValue; })[0]);
246251
}
247252

248253
// If index is undefined or out of bounds, do nothing

0 commit comments

Comments
 (0)