0
我遇到了另一個我正在開發的dojo啓用窗體的問題。用戶可以通過使用對話框輸入數據在頁面上輸入詳細信息,對話框依次更新數據庫,然後顯示輸入到表單上的用戶數據。以編程方式動態添加按鈕上的dijit ...如何?
添加的每個元素包含2個驗證文本框1個FilteringSelect。當它被添加到頁面中時,它們被添加爲簡單的文本框。
我試過只是添加爲標準字符串,但這意味着dojo.parse()不會在代碼上運行。我也嘗試以編程方式添加元素,但只是將元素對象顯示爲字符串到頁面。到目前爲止,我有:
var xhrArgs = {
url: url,
handleAs: "text",
preventCache: true,
load: function(data){
var idResult = parseInt(data);
if(idResult > 0){
var divStr = '<div id="employ_' + idResult + '" style="float:left;width:100%;">' +
'<table width="300">' +
'<tr>' +
'<td height="29"><Strong>' +
'<input type="text" dojoType="dijit.form.ValidationTextBox ' +
'change="markEmploymentForUpdate(); ' +
'id="cmpy_'+ idResult +'" '+
'required="true" ' +
'promptMessage="Please enter a valid company name" ' +
'invalidMessage="please enter a valid company name" ' +
'trim="true"' +
'value="'+ companyname +'"/>' +
'</td>' +
'<td height="29"><input dojoType="dijit.form.FilteringSelect" store="rolestore" searchAttr="name" name="role" onchange="markEmploymentForUpdate();" id="roleInput_'+ idResult +'" value="'+ jobrole +'" ></td>' +
'<td height="29">' +
'<input type="text" dojoType="dijit.form.ValidationTextBox" onchange="markEmploymentForUpdate();"' +
'id="jtitle_'+ idResult + '"' +
'required="true"' +
'promptMessage="Please enter your job title"' +
'invalidMessage="Please enter your job title"' +
'value="'+ jobtitle + '"/>' +
'</td>' +
'<td height="29"><img src="/images/site/msg/small/msg-remove-small.png" border="0" onmouseover="this.style.cursor=\'pointer\';" onclick="removeEmployer(\'employ_'+ idResult +'\', '+ idResult +')" /></td>' +
'</tr>' +
'</table>' +
'</div>';
dijit.byId('companydetails').hide();
dijit.byId('employername').setValue('');
dijit.byId('jobtitle').setValue('');
dijit.byId('jobrole').setValue('');
dojo.byId('data-table').innerHTML += divStr;
dojo.byId('companydetails').hide();
}else{
dojo.byId('add-error').innerHTML = '<div class="error">Unable to process your request. Please try again.</div>';
}
}
};
var deferred = dojo.xhrGet(xhrArgs);
這是顯示文本框爲dojo.parse未在此運行。如果我將ValidationTextBox替換爲:
var textbox = new dijit.form.ValidationTextBox({
id:"cmpy_" + idResult,
required:true,
trim:true,
"change":"markEmploymentForUpdate();",
promptMessage:"Please enter a valid company name",
value:companyname
});
我只是將對象打印到頁面上。
任何想法如何將它添加到我的頁面並維護dojo組件,而不是默認爲文本框?
非常感謝。
是否可以對整個頁面進行操作?如dojo.parser.parse(this)? – 2010-08-04 16:22:17
@GrantCollins:在加載dojo之前,在dojoConfig中設置'parseonload'。 – DanMan 2013-05-29 12:52:38