我有一个包含许多dijit.form元素和一个dijit.Editor的表单。表单最初填充的是我从服务器获得的数据。用户可以更改内容,然后将其提交回serer。一个经典的用例。
当用户提交表单时,我只需要发送更改后的数据。dijit.Editor的问题在于,即使用户没有做任何更改,它有时也会更改初始内容。例如:
在dijit.editor中输入的初始内容如下:
"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec</br>~Drooggebruik"当检索像这样的值(‘editorObj.get’)这样的内容时,它返回以下内容:
"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec<br />~Drooggebruik"如您所见,已更改为。我知道原始值是错误的,但那是因为源代码很糟糕,这不在我的控制范围之内。
所以我的问题是:有没有一种简单的方法来检查内容是否确实被用户更改了,而不仅仅是dijit.Editor本身。
发布于 2012-05-23 00:20:20
我最终要做的是向编辑器中添加两个额外的属性:
dijitObj.set('originalValue', value);
dijitObj.set('value', value);
dijitObj.set('uneditedValue', dijitObj.get('value'));在读出编辑器的值时,我使用这些值来确定是否有任何更改:
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');
}发布于 2012-03-23 08:21:00
类似这样的东西(在编辑器标记上)是有效的:
onkeypress="MyObject.setDirty(true);"在MyObject.isDirty上记录下来就行了。
这确实有一个缺点,如果用户在编辑器中键入内容,然后将所有内容修改为与最初完全相同,则值将是错误的(即,true,而内容将返回到原始状态),但对于大多数目的来说,这已经足够了。
发布于 2012-03-23 16:56:32
好吧,如果你只是想检查用户是否修改了什么,你可以试试:
var editorIsDirty = false;
var someConnect = dojo.connect(myEditor, "onChange", this, function(newValue){
if(originalSource != newValue){
editorIsDirty = true;
return;
}
editorIsDirty = false;
});诸如此类的事情,你就明白了;)
https://stackoverflow.com/questions/9826935
复制相似问题