Adding removing options from drop downs can be down right annoying, but I came up with a simple prototype function that I think makes it a lot easier.
You just pass your select box object, an object with an enumerable-esque ‘each’ method, and a method for creating the individual options. On the advice of my wonderful co-worker Jim, you can pass an optional 4th argument that lets you maintain the options length. It’s defaulted to 1 in order to preserve the first element in a drop down, which we typically leave blank.
Here’s the function:
// Requires Prototype: http://www.prototypejs.org/ function setDropDown(field, data, method, index) { field.options.length = index == null ? 1 : index; data.each( function(e) { field.options.add(method(e)); } ); }
And here are some quick examples:
To clear a drop down:
setDropDown(selectBoxObject,[]);
To copy items from one drop down to another:
setDropDown( selectBoxObject, otherSelectBoxObject.options, function(e) { return new Option(e.text, e.value); } );
Quick example using JSON
var json = Object.toJSON( {"COUNTRIES":[{"COUNTRY":"Hong Kong","ID":1},{"COUNTRY":"Japan","ID":2}]} ); setDropDown( selectBoxObject, json.COUNTRIES, function(e) { return new Option( e.COUNTRY, e.ID ); } );