16Nov/093
Populating Select Boxes with Prototype
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 );
}
);



























December 9th, 2010 - 14:35
I think you shouldn’t be converting the Object to json (Quick example using JSON line 1). If you do that, you can access the keys(json.COUNTRIES will return undefined).
December 9th, 2010 - 14:36
Sorry,
I mean yout can’t access the keys.
February 2nd, 2012 - 22:11
hi??