2011-02-24 28 views
6

我有一個包含我想要自動填充的窗體的dijit對話框。我可以讓對話框顯示其中的表單,但我無法設置表單中文本區域的值。這裏是容納html的div。設置Dijit.Form.Textarea的值

<div dojoType="dijit.Dialog" id="formDialog" title="Form Dialog" > 
<table> 
    <tr> 
     <td> 
      <label for="desc"> 
       Description: 
      </label> 
     </td> 
     <td> 

     <textarea id="desc" name="desc" dojoType="dijit.form.Textarea" style="width:200px;"></textarea> 

SAVE CLOSE

我能得到這個顯示就好做

VAR formDlg = dijit.byId(「FO rmDialog「); formDlg.show();

但我遇到的問題是設置textarea的值爲「desc」。我已經試過許多東西,但我知道我需要

var test = dijit.byId("desc"); 

,但如果我設置測試的任何財產,如

test.value = "foo"; 
    test.textContent = "foo"; 
    test.innerHTML = "foo"; 
    test.srcNodeRef = "foo"; 

值永遠不會保存和文本區域內顯示。這樣做有一個竅門嗎?任何幫助都會很棒。謝謝

回答

11
var test = dijit.byId("desc"); 
test.set("value", "foo"); 

..應該做的伎倆,我認爲。 Dojo中的大多數小部件都使用set方法(以前的attr)來設置屬性值,而不是像您試圖做的那樣直接操作它們。您也可以一氣呵成通過傳遞一個對象設置多個屬性:

var test = dijit.byId("desc"); 
test.set({"value": "foo", "name": "someName"}); 
+2

集沒有工作,但的setValue(「富」)一樣。謝謝!!! – 2011-02-24 17:58:15

+2

很奇怪,'setValue'已被棄用,以支持'set(「value」,..'。我想也許你正在使用Dojo的舊版本?哦,很高興我可以幫忙:-) – Frode 2011-02-24 18:05:37

+0

使用'set ()'不會改變DOM中的輸入值,但是dojo對該元素的內部值。你可以通過使用get()來驗證。查看元素選擇器將無助於:/ – cweiske 2017-05-30 21:26:14

2

出於某種原因,dijit.byId("txtAreaMytextarea").set("value", "somevalue")TextArea工作,但是當你使用Dojo 1.6,並使用dijit.form.SimpleTextareaTextArea與其他的dijit類型的作品。功能setValue("")也不起作用。

如果您遇到這種情況,請嘗試使用dojo.byId代替dijit.byId,只是設定值做

dojo.byId("txtAreaMytextarea").value = "somevalue";