68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
// Manage Countries and States form
|
|
(function($) {
|
|
$(document).ready(function(){
|
|
|
|
var addressState = (function () {
|
|
|
|
// A private function which logs any arguments
|
|
var initialize = function( element ) {
|
|
var elm = {};
|
|
|
|
elm.state = $(element);
|
|
elm.stateId = elm.state.val();
|
|
elm.country = $(elm.state.data('thelia-country'));
|
|
elm.countryId = elm.country.val();
|
|
elm.block = $(elm.state.data('thelia-toggle'));
|
|
|
|
elm.states = elm.state.children().clone();
|
|
elm.state.children().remove();
|
|
|
|
var updateState = function updateState() {
|
|
var countryId = elm.country.val(),
|
|
stateId = elm.state.val(),
|
|
hasStates = false;
|
|
|
|
if (stateId !== null && stateId !== '') {
|
|
elm.stateId = stateId;
|
|
}
|
|
|
|
elm.state.children().remove();
|
|
|
|
elm.states.each(function(){
|
|
var $state = $(this);
|
|
|
|
if ($state.data("country") == countryId) {
|
|
$state.appendTo(elm.state);
|
|
hasStates = true;
|
|
}
|
|
});
|
|
|
|
if (hasStates) {
|
|
// try to select the last state
|
|
elm.state.val(elm.stateId);
|
|
elm.block.removeClass("hidden");
|
|
} else {
|
|
elm.block.addClass("hidden");
|
|
}
|
|
};
|
|
|
|
elm.country.on('change', updateState);
|
|
updateState();
|
|
};
|
|
|
|
return {
|
|
init: function() {
|
|
|
|
$("[data-thelia-state]").each(function(){
|
|
initialize(this);
|
|
});
|
|
|
|
}
|
|
};
|
|
|
|
})();
|
|
|
|
addressState.init();
|
|
});
|
|
})(jQuery);
|