【发布时间】:2010-06-30 08:35:13
【问题描述】:
我正在尝试将新的 FilteringSelect 小部件动态添加到我用声明性标签制作的预先存在的表单中(在页面加载时)。
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, etc) 调用新的小部件,它只是不会发布!
我还尝试直接调用 FilteringSelect 小部件,而不是 dojo.create。这也制作了小部件,但在 POST 期间没有将值注册到表单中。
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();
我快要疯了。
【问题讨论】: