簡體   English   中英

確定(dojo)dijit.Editor中的內容是否與初始值不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM