我试图添加一个新的FilteringSelect小部件动态地添加到一个先前存在的声明式标记(页面加载)中。如何动态地将Dijit小部件添加到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++;
}
此代码正确地构建了一个FilteringSelect小部件,但小部件似乎没有在表单中注册。每当我提交表单时,新窗口小部件中的值都不会出现。虽然验证属性起作用,并且它可以正确地从商店中提取值。我甚至可以通过它的jsId(Prerequisite1,Prerequisite2等)调用新的小部件。它只是不会POST!
而不是dojo.create我也试着直接调用FilteringSelect小部件。这也构成了小部件,但在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();
我疯了,试图弄清楚这一点。
这很有帮助。我发现所有需要的是在我的情况下指定名称:'new dijit.form.TextBox({name:inputNode.name},inputNode);' – Chris 2012-06-25 17:35:33