Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dojo InlineEditBox在单击时清除以编程方式设置的初始值_Javascript_Dojo - Fatal编程技术网

Javascript Dojo InlineEditBox在单击时清除以编程方式设置的初始值

Javascript Dojo InlineEditBox在单击时清除以编程方式设置的初始值,javascript,dojo,Javascript,Dojo,Dojo允许用户单击一段文本,将其转换为编辑框并允许编辑文本(然后可以保存或取消更改) 在我的例子中,我需要以编程方式重写文本框的初始值(实际上是从REST调用)。dojo bug(我假设)会导致在单击InlineEditBox时将其重置为初始值,并且您将“编辑”一个文本框,该文本框中的文本与单击之前的文本不同-这不是最好的UX。Dojo似乎在以编程方式设置值之前首次创建InlineEditBox时保存该值,然后在该框切换到编辑模式时应用该初始值 因此,如果我有一个div,用文本“initial

Dojo允许用户单击一段文本,将其转换为编辑框并允许编辑文本(然后可以保存或取消更改)

在我的例子中,我需要以编程方式重写文本框的初始值(实际上是从REST调用)。dojo bug(我假设)会导致在单击InlineEditBox时将其重置为初始值,并且您将“编辑”一个文本框,该文本框中的文本与单击之前的文本不同-这不是最好的UX。Dojo似乎在以编程方式设置值之前首次创建InlineEditBox时保存该值,然后在该框切换到编辑模式时应用该初始值

因此,如果我有一个
div
,用文本“initial”和
id=“testDiv”
,在我的JavaScript中:

require(["dijit/InlineEditBox", "dijit/form/Textarea", "dojo/domReady!"],
    function(InlineEditBox, Textarea) {
  var editBox = new InlineEditBox({
    editor: Textarea,
    autoSave: false
  }, "testDiv").startup();
  var editText = "Click to edit text...";
  dojo.byId("testDiv").innerHTML = editText; // <-- what can I do instead?
});
require([“dijit/InlineEditBox”、“dijit/form/Textarea”、“dojo/domReady!”),
函数(InlineEditBox,Textarea){
var editBox=新的InlineEditBox({
编辑:Textarea,
自动保存:false
},“testDiv”).startup();
var editText=“单击以编辑文本…”;

dojo.byId(“testDiv”).innerHTML=editText;//这不是一个bug-只是不正确地使用了小部件。事实上,文本节点(双击前)和编辑模式下的textarea是两个不同的DOM元素。如果分配一个
innerHTML
属性,第二个保持不变。

设置小部件的值,而不是将文本分配给
innerHTML

需要([
“dijit/InlineEditBox”、“dijit/form/Textarea”、“dojo/domReady!”
],函数(InlineEditBox,Textarea){
var editBox=新的InlineEditBox({
编辑:Textarea,
自动保存:false
},“testDiv”);
editBox.startup();
var editText=“单击以编辑文本…”;
设置(“值”,编辑文本);
});


初始
完美,谢谢,这就成功了。我以前试过设置(“值”,…)
,但使用了错误的DOM元素-我不知道视图和编辑模式有单独的DOM元素,但我想这是有意义的。