函数在timeOut-function调用时不起作用,但与'onclick'

时间:2016-05-31 07:36:37

标签: javascript jquery

我尝试创建一些代码,让访问者可以制作电子邮件草稿并保存,以防他们在发送之前离开联系页面查找更多信息。通过让访问者手动保存带有草稿的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;
}

0 个答案:

没有答案