javascript - SetInterval 和输入字段

标签 javascript

好吧,我有两个带有 keyup 事件的输入字段,这是 js

$(document).ready(function() {
        is_draft_started = 0;

        $(":input").keyup(function() {
            if(is_draft_started == 0) {
                s2 = setInterval('draft("' + frm_name + '")', auto_save_time);
                is_draft_started = 1;
            }
        });

setInterval调用函数草稿

var frm_name = 'myform';
    var auto_save_time = 1000 * <?php echo AUTO_SAVE_TIME?>;

    <?php if($_GET["uid"] != "" && isset($_GET["uid"])): ?>
            var id_draft = '<?php echo $draft->id?>';
    <?php else: ?>
            var id_draft = 0;
    <?php endif; ?>

    function draft(forma_name) {
        if(id_draft == 0) {
            $.post("?c=licnePoruke&f=slanje&pk=<?php echo $pk?>&saveDraft=1", $("[name=" + forma_name + "]").serialize(), 
                    function(data) {
                        id_draft = data;
                                                $('#draft_id').val(id_draft);
                        last_save_time();
                    }); 
        }
        else {
            $.post("?c=licnePoruke&f=slanje&pk=<?php echo $pk?>&updateDraft=" + id_draft, $("[name=" + forma_name + "]").serialize(), 
                    function(data) {
                        last_save_time();
                    });
        }

        return false;
    }

但不知何故,在草稿函数中,首先 if 被调用两次,无法弄清楚为什么。对我的问题有任何帮助

最佳答案

您应该使用setTimeout而不是setInterval,后面的函数每次遇到auto_save_time时都会执行回调(如draft),比如 1000 毫秒、2000 毫秒、3000 毫秒......

关于javascript - SetInterval 和输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063326/

相关文章:

javascript - 如何使一页网站在 div 更改时更改背景颜色?

javascript - 如何在 javascript 的 FormData 中追加对象?

javascript - 离线测试经过身份验证的 Cloud Endpoints 方法

javascript - 将 CSS 链接到 flask 时出错

javascript - 观察 Controller 变量,将其设置为 this 而不是 $scope,可能吗?馊主意

javascript - 使用 typescript 导入外部javascript的最佳方法

javascript - 将对象数组转换为属性数组

javascript - 是否有名为 bind 的 JavaScript 或 jQuery 事件?

javascript - 使用 serialize() 定位特定表单

javascript - 恒定负载(每秒 x 个新请求)