首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定(dojo) dijit.Editor中的内容是否与初始值不同

确定(dojo) dijit.Editor中的内容是否与初始值不同
EN

Stack Overflow用户
提问于 2012-03-23 00:57:08
回答 3查看 382关注 0票数 1

我有一个包含许多dijit.form元素和一个dijit.Editor的表单。表单最初填充的是我从服务器获得的数据。用户可以更改内容,然后将其提交回serer。一个经典的用例。

当用户提交表单时,我只需要发送更改后的数据。dijit.Editor的问题在于,即使用户没有做任何更改,它有时也会更改初始内容。例如:

在dijit.editor中输入的初始内容如下:

代码语言:javascript
复制
"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec</br>~Drooggebruik"

当检索像这样的值(‘editorObj.get’)这样的内容时,它返回以下内容:

代码语言:javascript
复制
"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec<br />~Drooggebruik"

如您所见,已更改为。我知道原始值是错误的,但那是因为源代码很糟糕,这不在我的控制范围之内。

所以我的问题是:有没有一种简单的方法来检查内容是否确实被用户更改了,而不仅仅是dijit.Editor本身。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-23 00:20:20

我最终要做的是向编辑器中添加两个额外的属性:

代码语言:javascript
复制
dijitObj.set('originalValue', value);
dijitObj.set('value', value);
dijitObj.set('uneditedValue', dijitObj.get('value'));

在读出编辑器的值时,我使用这些值来确定是否有任何更改:

代码语言:javascript
复制
var value = dijitObj.get('value');
if (dijitObj.get('uneditedValue') === value) {
  // The value hasn't changed, so we send the original value
  value = dijitObj.get('originalValue');
}
票数 1
EN

Stack Overflow用户

发布于 2012-03-23 08:21:00

类似这样的东西(在编辑器标记上)是有效的:

代码语言:javascript
复制
onkeypress="MyObject.setDirty(true);"

MyObject.isDirty上记录下来就行了。

这确实有一个缺点,如果用户在编辑器中键入内容,然后将所有内容修改为与最初完全相同,则值将是错误的(即,true,而内容将返回到原始状态),但对于大多数目的来说,这已经足够了。

票数 1
EN

Stack Overflow用户

发布于 2012-03-23 16:56:32

好吧,如果你只是想检查用户是否修改了什么,你可以试试:

代码语言:javascript
复制
var editorIsDirty = false;
var someConnect = dojo.connect(myEditor, "onChange", this, function(newValue){
    if(originalSource != newValue){
        editorIsDirty = true;
        return;
    }
    editorIsDirty = false;
});

诸如此类的事情,你就明白了;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9826935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档