2015-06-02 106 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()}); 

然后保存到之前做一些验证数据库。