将 setTimeout 与 jquery 一起使用

Using setTimeout with jquery

我想在打开的箱子上设置一个计时器。我把这个放在我的按钮上

 <input type="submit" value="Checkout" name="submitAction" class="btn btn-block alert-success" onclick="unlockcase()" />

这是调用我的控制器并在 15 分钟后关闭案例的函数。

      function unlockcase() {
        setTimeout(function () {
            var id = @Model.ID
     $.ajax({
         type: 'POST',
         url: '/Case/UnlockCase',
         data: 'id=' + id,
         success: function () {
             window.location.reload(true);

         }
     });
        },15000);
   };

它命中了函数和控制器,但它立即发生,计时器不工作。任何帮助将不胜感激。

首先把你的html改成这个

     <button type="button" class="btn btn-block alert-success" onclick="unlockcase()">Checkout</button>

那么你的javascript可以如下

    function unlockcase() {
        setTimeout(function () {
            var id = @Model.ID;

            $.ajax({
                type: 'POST',
                url: '/Case/UnlockCase',
                data: 'id=' + id,
                success: function () {
                    window.location.reload(true);
                }
             });
         }, 15 * 1000 * 60);
     }

setTimeoout中等待时间的单位是millisecond所以15 * 1000表示15秒,15 * 1000 * 60表示15分钟

如果您使用 jQuery 为什么不在按钮上使用 .click() 事件。像这样:

HTML:

<input type="submit" value="Checkout" name="submitAction" class="btn btn-block alert-success myButton" />

Javascript:

$('.myButton').click(function() {
    var counter = 1;
    var timer = setInterval(function(){
        if(counter > 900000){ //If it passed 15 minutes.
            //DO YOUR AJAX CALL
            var id = @Model.ID;
            $.ajax({
                type: 'POST',
                url: '/Case/UnlockCase',
                data: 'id=' + id,
                success: function () {
                    window.location.reload(true);
                }
             });
            //Clear the loop
            clearInterval(timer); 
        }
        counter++;
    }, 1000);
});

JSFiddle:http://jsfiddle.net/hoggen1o/