Skip to content

Instantly share code, notes, and snippets.

@codenamezjames
Created November 11, 2015 22:03
Show Gist options
  • Save codenamezjames/8b64fb62e37588583d02 to your computer and use it in GitHub Desktop.
Save codenamezjames/8b64fb62e37588583d02 to your computer and use it in GitHub Desktop.
/**
* Usage reorderStates('#txtState')
* .getArrayOfOptionAttrs()
* .orderByUsa()
* .renderOptions();
*/
var reorderStates = (function($){
var canadaStates = ['Alberta', 'British Columbia', 'Manitoba', 'New Brunswick',
'Newfoundland & Labrador', 'Nova Scotia', 'Ontario', 'Prince Edward Island',
'Quebec', 'Saskatchewan', 'Northwest Terr.', 'Nunavut', 'Yukon'];
var p = {};
var newStates = [];
var $target;
var target;
var oldtarget;
p.getArrayOfOptionAttrs = function(attr){
if (newStates.length && oldtarget === target) {return p;}
oldtarget = target;
newStates = [];
$target.find('option').each(function() {
newStates.push($(this)[attr ||'val']());
});
return p;
};
p.orderByCanada = function() {
for (var i = 0; i < newStates.length; i++) {
if ( ~canadaStates.indexOf(newStates[i]) ) {
newStates.splice(i,1);
}
}
newStates.splice(1, 0, canadaStates);
newStates = newStates.toString().split(',');
return p;
};
p.orderByAlpha = function(){
var none = newStates.shift();
newStates = newStates.sort();
newStates.unshift(none);
return p;
};
p.renderOptions = function(){
$target.html('');
for (var j = 0; j < newStates.length; j++) {
$target.append('<option value="'+newStates[j]+'">'+newStates[j]+'</option>');
}
return p;
};
return function(target) {
$target = $(target);
return p;
};
})(jQuery);
$(document).ready(function() {
var myParam = !!~location.href.indexOf('079mf');
if (myParam === true) {
reorderStates('#txtState')
.getArrayOfOptionAttrs()
.orderByCanada()
.renderOptions();
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment