如何使用dom.byid更改输入文本框的值?

时间:2013-09-11 06:22:55

标签: javascript dojo

我正在尝试使用几个dojo选项来更改输入文本框的值,但不知何故这些选项不起作用。另一方面,当我尝试使用document.getElememtById选项更改文本时,我能够这样做。有人可以解释为什么我的dojo选项不起作用吗?

   if (response.responseJSON.errorMessage){
                        dom.byId("AuthInfo").innerHTML=response.responseJSON.errorMessage;
                    //  dom.byId("AuthPassowrd").value="";

                    //  domAttr.set("AuthPassowrd", "value", "");
                    //  domConstruct.empty("AuthPassword");
                        document.getElementById("AuthPassword").value="";

                    }

我的html代码是 -

      <input type="password" placeholder="Enter password" id="AuthPassword"/>

2 个答案:

答案 0 :(得分:0)

我不确定这段代码中是否只是一个拼写错误,但你写的是"AuthPassowrd"而不是"AuthPassword"。如果只是这里的情况(而不是真实的代码),请阅读我的原始答案。


原始答案

您确定导入了正确的模块(dojo/domdojo/dom-attrdojo/dom-construct)吗?这些例子对我来说很好。我做了一个JSFiddle来向你展示它是如何工作的。您可以使用以下方法导入这些模块:

require(["dojo/dom", "dojo/dom-attr", "dojo/dom-construct"], function(dom, domAttr, domConstruct) {
    // Here you can use dom, domAttr and domConstruct
});

确保在执行命令之前加载DOM。 DOM节点上的操作只能在加载DOM(或整个页面)的那一部分时执行。通常,您可以等到DOM准备好dojo/domReady!插件:

require(["dojo/domReady!], function() {
    // Will only be executed when the dom is ready
});

在您使用domConstruct.empty("AuthPassword");的第三行注释代码中。这不适用于清除输入字段,但用于从DOM节点中删除所有子节点。文本框的值不是子节点,因此不起作用。

答案 1 :(得分:0)

你应该替换它:

domAttr.set("AuthPassowrd", "value", "");

使用:

domAttr.set(dom.byId("AuthPassword"), "value", "");