Установить значение Dijit.Form.Textarea

У меня есть диалоговое окно dijit, содержащее форму, которую я хочу заполнить автоматически. Я могу отобразить диалоговое окно с формой в нем, но мне не удалось установить значение текстовой области в форме. Вот div, в котором находится html.

<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"); формаDlg.show();

Но у меня проблема с установкой значения текстовой области под названием «desc». Я пробовал много вещей, но я знаю, что мне нужно

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

но если я установлю какое-либо свойство теста, например

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

Значение никогда не сохраняется и не отображается внутри текстового поля. Есть ли способ сделать это? Любая помощь будет здорово. Спасибо


person Isaac Levin    schedule 24.02.2011    source источник


Ответы (2)


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

.. должно сработать, я думаю. Большинство виджетов в Dojo используют метод set (ранее attr) для установки значений свойств вместо того, чтобы манипулировать ими напрямую, как вы пытались сделать. Вы также можете установить несколько свойств за один раз, передав объект:

var test = dijit.byId("desc");
test.set({"value": "foo", "name": "someName"});
person Frode    schedule 24.02.2011
comment
Это странно, setValue устарел в пользу set("value", ... Я думаю, возможно, вы используете более старую версию Dojo? О, рад, что смог помочь :-) - person Frode; 24.02.2011
comment
Использование set() не изменяет входное значение в DOM, а меняет внутреннее значение dojo для этого элемента. Вы можете убедиться в этом, используя get(). Поиск в селекторе элементов не поможет :/ - person cweiske; 31.05.2017

По какой-то причине dijit.byId("txtAreaMytextarea").set("value", "somevalue") не работает с TextArea, но работает с другими типами dijit, когда вы используете Dojo 1.6 и используете dijit.form.SimpleTextarea как TextArea. Функция setValue("") тоже не работает.

Если это произойдет с вами, попробуйте использовать dojo.byId вместо dijit.byId и просто установите значение, выполнив

dojo.byId("txtAreaMytextarea").value = "somevalue";
person Waqas_Ashraf    schedule 04.06.2012