2015-06-02 124 views
0

是否可以查看元素是否已在DOM中更改?檢查DOM元素的更改值

在我的情況下,我有一個內容可編輯的表和一個ID來訪問每個表的行。我想知道哪些內容已被更改。

<table id="myTable"> 
… 

<td id=「name:1" contenteditable=「true"></td> 
<td id=「phone:1」 contenteditable="true"></td> 
<td id=「address:1」 contenteditable=「true"></td> 

<td id=「name:2" contenteditable=「true"></td> 
<td id=「phone:2」 contenteditable="true"></td> 
<td id=「address:2」 contenteditable=「true"></td> 

… 
</table> 

<input type="hidden" id="inputMyTable" name="inputMyTable"> 

到目前爲止,我正在使用DOM方法來獲取每個單元格的值並將其發送到服務器。然後在服務器端,對於I數據庫中的每一行,檢查數據庫中的值是否已更改,然後升級數據庫。

有沒有更好的方法來做到這一點?


P.S.當我提交表單我送的表值到服務器端代碼使用此腳本

var data = []; 

$("#myTable tr").each(function(rowIndex) { 
    $(this).find("td").each(function(cellIndex) { 
     data.push($(this).text()); 
    }); 
}); 
$('#inputMyTable').val(data.join(";")); 

然後服務器端我用$_POST讀取輸出。

+0

JS的DOMSubtreeModified事件對你來說可能是一個好的開始。看到這個答案︰http://stackoverflow.com/a/4979828/3334049 – lucasnadalutti

+0

這似乎是一個純粹的PHP問題,因爲它似乎你想檢查,在PHP中,腳本返回的值是否已經改變從他們的默認。或者您是否想使用JavaScript將更改後的值發送到服務器? (無論哪種方式,您仍然需要在服務器上進行驗證。) –

回答

0

DOM變化可以在JavaScript中跟蹤與突變觀察http://addyosmani.com/blog/mutation-observers/

我會保存在一個對象的變化,並將它們發送到服務器上focusout

$('[contenteditable]').on('focusout', function(e){prepare_data_and_send_to_server()}); 

然後保存到之前做一些驗證數據庫。