J'essaie d'ajouter dynamiquement un nouveau widget FilteringSelect à un formulaire préexistant que j'ai créé à partir de balises déclaratives (au chargement de la page).Comment ajouter dynamiquement un widget Dijit à un formulaire Dojo?
prereqs = 0;
function addAnotherPrerequisite(){
var newPreReqCursor = dijit.byId("Prerequisite"+(prereqs-1)).domNode;
dojo.create("input",{
id:"prerequisite"+prereqs,
jsId:"Prerequisite"+prereqs,
dojoType:"dijit.form.FilteringSelect",
store:"PrerequisitesStore",
searchAttr:"name",
style:"width: 350px;",
required:"true",
class: "appendedPreReq"},newPreReqCursor,"after");
dojo.parser.parse(newPreReqCursor.parentNode);
prereqs++;
}
Ce code génère correctement un widget FilteringSelect, mais le widget ne semble pas être enregistré avec le formulaire. Chaque fois que je soumets le formulaire, aucune des valeurs dans les nouveaux widgets n'apparaît. L'attribut de validation fonctionne, cependant, et il tire correctement les valeurs du magasin. Je peux même appeler le nouveau widget via son jsId (Prerequisite1, Prerequisite2, etc) Il ne sera tout simplement pas POST!
Au lieu de dojo.create, j'ai également essayé d'appeler le widget FilteringSelect directement. Cela a également fait le widget, mais n'a pas enregistré les valeurs avec le formulaire lors du POSTing.
var filteringSelect = new dijit.form.FilteringSelect({
id: "prereq"+prereqs,
jsId: "Prerequisite"+prereqs,
store: PrerequisitesStore,
searchAttr: "name",
required: true,
style: 'width: 350px;',
class: 'appendedPreReq'
},
"prerequisite"+prereqs).startup();
Je deviens fou en essayant de comprendre cela.
C'était utile. J'ai trouvé que tout ce qui était requis était de spécifier le nom dans ma situation: 'new dijit.form.TextBox ({name: inputNode.name}, inputNode);' – Chris