dijit.form._FormMixin.setValues
dojo.require("dijit.form.Form");
defined in dijit/form/Form.js
fill in form values from a JSON structure
Usage
function (/*Object*/ obj) (view source)
// generate map from name --> [list of widgets with that name] var map = { }; dojo.forEach(this.getDescendants(), function(widget){ if(!widget.name){ return; } var entry = map[widget.name] || (map[widget.name] = [] ); entry.push(widget); }); // call setValue() or setAttribute('checked') for each widget, according to obj for(var name in map){ var widgets = map[name], // array of widgets w/this name values = dojo.getObject(name, false, obj); // list of values for those widgets if(!dojo.isArray(values)){ values = [ values ]; } if(typeof widgets[0].checked == 'boolean'){ // for checkbox/radio, values is a list of which widgets should be checked dojo.forEach(widgets, function(w, i){ w.setValue(dojo.indexOf(values, w.value) != -1); }); }else if(widgets[0]._multiValue){ // it takes an array (e.g. multi-select) widgets[0].setValue(values); }else{ // otherwise, values is a list of values to be assigned sequentially to each widget dojo.forEach(widgets, function(w, i){ w.setValue(values[i]); }); } } /*** * TODO: code for plain input boxes (this shouldn't run for inputs that are part of widgets) dojo.forEach(this.containerNode.elements, function(element){ if (element.name == ''){return}; // like "continue" var namePath = element.name.split("."); var myObj=obj; var name=namePath[namePath.length-1]; for(var j=1,len2=namePath.length;j<len2;++j){ var p=namePath[j - 1]; // repeater support block var nameA=p.split("["); if (nameA.length > 1){ if(typeof(myObj[nameA[0]]) == "undefined"){ myObj[nameA[0]]=[ ]; } // if nameIndex=parseInt(nameA[1]); if(typeof(myObj[nameA[0]][nameIndex]) == "undefined"){ myObj[nameA[0]][nameIndex] = { }; } myObj=myObj[nameA[0]][nameIndex]; continue; } // repeater support ends if(typeof(myObj[p]) == "undefined"){ myObj=undefined; break; }; myObj=myObj[p]; } if (typeof(myObj) == "undefined"){ return; // like "continue" } if (typeof(myObj[name]) == "undefined" && this.ignoreNullValues){ return; // like "continue" } // TODO: widget values (just call setValue() on the widget) switch(element.type){ case "checkbox": element.checked = (name in myObj) && dojo.some(myObj[name], function(val){ return val==element.value; }); break; case "radio": element.checked = (name in myObj) && myObj[name]==element.value; break; case "select-multiple": element.selectedIndex=-1; dojo.forEach(element.options, function(option){ option.selected = dojo.some(myObj[name], function(val){ return option.value == val; }); }); break; case "select-one": element.selectedIndex="0"; dojo.forEach(element.options, function(option){ option.selected = option.value == myObj[name]; }); break; case "hidden": case "text": case "textarea": case "password": element.value = myObj[name] || ""; break; } }); */
parameter | type | description |
---|---|---|
obj | Object |