2 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以將事件偵聽器附加到j(luò)excel表,這里有一個(gè)jsfiddle來演示如何監(jiān)聽單元格上的更改事件,這里也是代碼作為片段(片段將不起作用,因?yàn)镾O是沙箱,不允許某些代碼運(yùn)行,如果您進(jìn)行測試,此片段將在您的本地計(jì)算機(jī)上工作):onchange
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<script src="//bossanova.uk/jexcel/v4/jexcel.js"></script>
<script src="//bossanova.uk/jsuites/v2/jsuites.js"></script>
<link rel="stylesheet" href="//bossanova.uk/jexcel/v4/jexcel.css" type="text/css" />
<link rel="stylesheet" href="//bossanova.uk/jsuites/v2/jsuites.css" type="text/css" />
<div id="spreadsheet"></div>
<div>
<button onclick="$('#log').html('')">Clear</button><br>
<p>Log:</p>
<div id="log" style="background-color:#c7eaff; border-radius:2px; color:#000; padding:20px"></div>
</div>
<script>
var changed = function(instance, cell, x, y, value) {
var cellName = jexcel.getColumnNameFromId([x,y]);
$('#log').append('<p>New change on cell ' + cellName + ' to: ' + value + '</p>');
}
var data = [
['Mazda', 2001, 2000, '2006-01-01'],
['Pegeout', 2010, 5000, '2005-01-01'],
['Honda Fit', 2009, 3000, '2004-01-01'],
['Honda CRV', 2010, 6000, '2003-01-01'],
];
jexcel(document.getElementById('spreadsheet'), {
data:data,
rowResize:true,
columnDrag:true,
columns: [
{ type: 'text', width:'200' },
{ type: 'text', width:'100' },
{ type: 'text', width:'100' },
{ type: 'calendar', width:'100' },
],
onchange: changed
});
</script>
</html>
因此,您只需在事件偵聽器中更改未保存的變量/標(biāo)志即可,此示例也取自官方網(wǎng)站,其中有一個(gè)附加到j(luò)excel表的事件偵聽器列表onchange

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
Jsuites是jexcel的依賴項(xiàng),并且已經(jīng)有一個(gè)插件可以實(shí)現(xiàn)這一點(diǎn)。
<form id='myForm'>
<input type='hidden' name='data'>
<div id='spreadsheet'></div>
<input type='button' value='Save data' onclick='saveData(); myTracker.resetTracker()'>
</form>
<script>
var myTracker = jSuites.tracker(document.getElementById('myForm'));
jexcel(document.getElementById('spreadsheet'), {
onafterchanges: function(el) {
document.forms[0].name.value = el.jexcel.getData();
}
}
</script>
因此,基本上,您實(shí)現(xiàn)saveData來保存數(shù)據(jù)并重置跟蹤器以再次開始跟蹤更改。
此處的另一個(gè)更改是僅在設(shè)置初始表內(nèi)容后才啟動 formTracker。因此,如果用戶打開表,則不執(zhí)行任何更改,并且離開不會發(fā)出警報(bào),因?yàn)閿?shù)據(jù)中沒有更改。
資料來源:https://bossanova.uk/jsuites/tracking-for-form-changes
添加回答
舉報(bào)