我尝试创建一些代码,让访问者可以制作电子邮件草稿并保存,以防他们在发送之前离开联系页面查找更多信息。通过让访问者手动保存带有草稿的cookie,我成功了。但是,我希望它更自动化,在这方面我发现了一个非常好的代码和演示,这里每秒都做到这一点。原始代码可以在链接中找到,我的调整后的代码如下所示:http://jsfiddle.net/madlittlemods/nxq4a/
var timeoutId;
$('#email_1, #subject_1, #message_1').on('input propertychange change', function() {
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
// Runs 1 second (1000 ms) after the last change
setCookie(name, value);
storeValues(form);
alert("Alert was run.");
}, 1000);
});
因此,每次用户停止更改textarea时,我都会使用此演示的“超时”部分来尝试运行我的cookie保存功能。但是这些功能没有执行,我只是无法弄清楚原因。正如您所看到的,我已尝试插入警报以查看是否已运行“setTimeout”函数,并且只有在我删除“storeValues”函数以及从“setCookie(名称,值)中删除参数时才会运行警报)“功能。
因此,我希望你们这里的一些人可以帮助我。我必须承认我对JavaScript并不是很熟悉,基本上所有的代码都是我在互联网上找到的,借用并调整到我自己的网站。这也意味着它可能是一个小的,愚蠢的错误,我似乎无法找到。请注意,所有剩余的代码都是按照用意进行的,问题(从我看来)似乎只与上面提到的代码有关。
首先,可以在此处找到完整演示:http://codepen.io/Chris7/pen/oLNBbx
为了让您不必按照演示,setCookie和storeValues的功能来到这里:
setCookie方法:
function setCookie(name, value) {
document.cookie=name + "=" + escape(value) + "; path=/; expires=" + expiry.toGMTString();
}
storeValues:
function storeValues(form) {
setCookie("email_1", form.email_1.value);
setCookie("subject_1", form.subject_1.value);
setCookie("message_1", form.message_1.value);
return true;
}