7

我有一个 dijit 对话框,其中包含我想要自动填充的表单。我可以让对话框与其中的表单一起显示,但我无法在表单中设置文本区域的值。这是包含 html 的 div。

<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>

保存 关闭

我可以通过这样做来很好地显示它

var formDlg = dijit.byId("formDialog"); formDlg.show();

但我遇到的问题是设置名为“desc”的文本区域的值。我尝试了多种方法,但我知道我需要

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

但是如果我设置任何测试属性,例如

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

该值永远不会保存并显示在文本区域内。这样做有诀窍吗?任何帮助都会很棒。谢谢

4

2 回答 2

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

..应该做的伎俩,我想。Dojo 中的大多数小部件使用该set方法(以前称为attr)来设置属性值,而不是像您尝试过的那样直接操作它们。您还可以通过传递一个对象一次性设置多个属性:

var test = dijit.byId("desc");
test.set({"value": "foo", "name": "someName"});
于 2011-02-24T16:53:27.633 回答
2

出于某种原因,当您使用 Dojo 1.6 并使用as时,dijit.byId("txtAreaMytextarea").set("value", "somevalue")它不能TextArea与其他 dijit 类型一起使用,但可以与其他类型一起使用。该功能也不起作用。dijit.form.SimpleTextareaTextAreasetValue("")

如果您遇到这种情况,请尝试使用dojo.byId而不是dijit.byId设置值

dojo.byId("txtAreaMytextarea").value = "somevalue";
于 2012-06-04T06:20:58.360 回答