[英]Determine if the content in a (dojo) dijit.Editor is different from the initial value
我有一個包含許多dijit.form元素的表單,還有一個dijit.Editor。 表單最初填充了我從服務器獲取的數據。 用戶可以更改內容,然后將其提交給服務器。 一個經典的用例。
當用戶提交表單時,我只需要發送更改的數據。 dijit.Editor的問題在於,即使用戶沒有進行任何更改,它有時也會更改初始內容。 例如:
在dijit.editor中輸入的初始內容如下:
"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec</br>~Drooggebruik"
當檢索像這個editorObj.get('value')的內容時; 它返回:
"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec<br />~Drooggebruik"
如您所見,</br>已更改為<br />。 我知道原來的價值是錯誤的,但那是因為來源很糟糕,這是我無法控制的。
所以我的問題是:是否有一種簡單的方法可以檢查用戶是否確實更改了內容,而不僅僅是dijit.Editor本身。
我最終做的是為編輯器添加兩個額外的屬性:
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');
}
這樣的東西(在編輯器標記上)起作用:
onkeypress="MyObject.setDirty(true);"
並在MyObject.isDirty
上跟蹤它。
這確實有一個缺點,即如果用戶輸入編輯器然后修改所有內容與原來完全一樣,那么該值將是錯誤的(即,真實,而內容又回到原始狀態),但它足以滿足大多數目的。
好吧,如果您只想檢查用戶是否修改了某些內容,您可以嘗試:
var editorIsDirty = false;
var someConnect = dojo.connect(myEditor, "onChange", this, function(newValue){
if(originalSource != newValue){
editorIsDirty = true;
return;
}
editorIsDirty = false;
});
類似的東西,你明白了;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.