我的网站上有一个大表单,我希望能够在用户填写表单时自动保存到数据库。几乎与谷歌驱动器在输入文档时的工作方式相同。
我试图不让一个函数每 X 秒运行一次,而是让一个函数在用户打字休息时运行。因此,如果用户在 1 小时内没有输入内容但仍在页面上,则不会继续推送保存请求。
到目前为止,这就是我所拥有的全部内容,这是一个基本的 javascript 表单提交。
$("#page1Form").submit(function(event){
event.preventDefault();
$changesSaved.text("Saving...");
var url = "/backend/forms/page1-POST.php";
$.ajax({
type: "POST",
url: url,
data: $("#page1Form").serialize(),
success: function(data) { $changesSaved.text(data); }
});
return false;
});
对文本区域更改进行反跳。
Demo: jsFiddle http://jsfiddle.net/MadLittleMods/2LG8f/
将您的 ajax 调用放入saveToDB()
功能。这些事件名称('input propertychange change'
) 将在任何表单元素更改时触发,例如单选按钮、输入等。
var timeoutId;
$('#the-textarea').on('input propertychange change', function() {
console.log('Textarea Change');
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
// Runs 1 second (1000 ms) after the last change
saveToDB();
}, 1000);
});
function saveToDB()
{
console.log('Saving to the db');
}
这是一个完整的演示,向您展示如何对完整表单进行反跳并使用 ajax 发送数据,然后返回状态(正在保存、已保存等)。
演示完整形式和ajax:jsFiddle http://jsfiddle.net/MadLittleMods/NxQ4A/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)