计时器onClick javascript

时间:2014-10-27 14:33:16

标签: javascript

这是我的代码:

  this.ItemId = function (ItemId) {
        var itemParameters = ItemId;

        //put a timer
        setTimeout(function() {
            $.ajax({
                type: "POST",
                url: '/Menu/ChangeItemId',
                dataType: 'json',
                data: JSON.stringify(itemParameters),
                contentType: "application/json; charset=utf-8",
                success: self.ChangeItemIdSuccess,
                error: errorFunc
            }, 5000);
        });
    };

一旦ItemId完成执行,post请求就完成了,在将数据发布到服务器之前,我想延迟它(5秒),以防用户再次单击该按钮,更改进程中的ItemId

2 个答案:

答案 0 :(得分:2)

看起来像是一个错字:

setTimeout的原型:setTimeout(function,milliseconds,lang)

将5000参数添加到 ajax 方法 > setTimeout 方法。

这是有效的代码:

  this.ItemId = function (ItemId) {
        var itemParameters = ItemId;

        //put a timer
        setTimeout(function() {
            $.ajax({
                type: "POST",
                url: '/Menu/ChangeItemId',
                dataType: 'json',
                data: JSON.stringify(itemParameters),
                contentType: "application/json; charset=utf-8",
                success: self.ChangeItemIdSuccess,
                error: errorFunc
            });
        }, 5000);
    };

Here's setTimeout的简单示例。

答案 1 :(得分:0)

我没有得到你想要做的事情,但是如果你想要用户点击按钮,那么第二次点击后请求将被称为5000 milisec而不是第一次点击。你应该试试这个: -

this.ItemId = function (ItemId) {
    var itemParameters = ItemId, me = this;
    //put a timer
    me.doneTypingInterval = 5000;
   // Call every time
   me.delayExecute = function() {
         clearTimeout(me.typingTimer);
         me.typingTimer = setTimeout(me.request, me.doneTypingInterval);
         return true;
   };
   // do ajax
     me.request = function() {
        $.ajax({
            type: "POST",
            url: '/Menu/ChangeItemId',
            dataType: 'json',
            data: JSON.stringify(itemParameters),
            contentType: "application/json; charset=utf-8",
            success: self.ChangeItemIdSuccess,
            error: errorFunc
        });
    };

};