清除超时在 chrome 中不起作用



我编写了一个简单的函数,在一定的时间间隔后向服务器发送请求。

var initialTimer;
$('.cart').on('keyup change', 'input', function () {
        if (initialTimer) {
            clearTimeout(initialTimer);
        }
        initialTimer = setTimeout(function () {
           $.ajax({
                    url: "https://httpbin.org/get",
                    type: 'GET',
                }).done(function (response) {
                    alert(response.url);
                }).fail(function (response) {
                    console.log(response);
                }).always(function () {
                    console.log('request ended.');
                });
        }, 500);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="cart">
  <input type="number" name="quantity">
</div>

此代码适用于Firefox,但在Chrome中不起作用。使用输入框递增/递减时,它在Chrome中不起作用,但如果我在输入框中键入数字,它可以工作。

你没有显示你的 HTML,但这段代码在 chrome 中对我有用:

var initialTimer;
$('.cart').on('keyup', function () {
    if (initialTimer) {
        clearTimeout(initialTimer);
    }
    initialTimer = setTimeout(function () {
       console.log('test');
       // Send AJAX request to server
    }, 1000);
});

https://jsfiddle.net/dcjh47fs/

看起来 jQuery 签名不正确。试试这个:

$('.cart').on('keyup', function () {
    ...
});

相关内容

  • 没有找到相关文章

最新更新