【发布时间】:2016-10-27 04:09:49
【问题描述】:
我正在编写一个页面以从数据库表中提取信息并将其放入 HTML 表中。然后,我使用 jQuery 使任何 <td> 单元格在被单击时可编辑,现在我尝试使用 jQuery keyup 函数来检测可编辑单元格何时被编辑,然后使用 ajax 使用编辑后的信息更新数据库。当按下数字、字母和空格键时,keyup 会启动,但由于某种原因,当按下退格键、删除键或回车键时,它不会启动。我不确定我的代码是否有错误或可能是什么原因造成的。
任何cmets或建议都会非常有帮助,非常感谢!
这是我用于单击事件的 jQuery,然后也用于 keyup 以及一个快速表格示例:
$('td').click(function() {
var val = ($(this).siblings().first().text());
var col = $(this).parent().children().index($(this));
$(this).prop('contenteditable', true);
$(this).keyup(function() {
$.ajax({
method: "POST",
url: "updatedatabase.php",
data: {
content: $(this).text(),
date: val
}
})
.done(function(msg) {
alert("Data Saved: " + msg);
});
});
});
table, th, td {
border: 1px solid black;
border-collapse: collapse;
font-size: 90%;
}
th, td {
padding: 8px;
}
td {
text-align: center;
}
table {
margin: 0 auto;
}
td:click {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<th></th>
<th>22oz Dark</th>
<th>12ct 4oz Dark</th>
</tr>
<tr>
<th>2016-01-01</th>
<td>9785</td>
<td>2478</td>
</tr>
<tr>
<th>2016-01-02</th>
<td>8754</td>
<td>2136</td>
</tr>
<tr>
<th>2016-01-03</th>
<td>13587</td>
<td>2203</td>
</tr>
<tr>
<th>2016-01-04</th>
<td>14111</td>
<td>3297</td>
</tr>
<tr>
<th>2016-01-05</th>
<td>13212</td>
<td>3101</td>
</tr>
<tr>
<th>2016-01-06</th>
<td>16335</td>
<td>3299</td>
</tr>
<tr>
<th>2016-01-07</th>
<td>15421</td>
<td>3100</td>
</tr>
</table>
【问题讨论】:
-
你想在按下回车键的时候调用ajax??
-
好的,让我尝试用不同的方式解释。 HTML 表格包含生产计划,可以通过单击单元格然后在单元格中键入要运行的新计数来编辑计划。我想在以任何方式修改数据后立即将新数据写入数据库。 (我不能相信这些人会点击单元格或类似的东西。)如果当前在单元格中放置了一个新值,它会起作用,但如果信息被删除并且单元格留空,则不会。我猜回车键并不重要,只是我在尝试测试时注意到的。
-
在另一个事件处理程序中附加一个事件处理程序在大多数情况下是错误的。想象一下,如果您单击该
td两次:当您开始输入时,您的服务器的流量将增加一倍。
标签: javascript jquery html ajax