我编写了一个简单的函数,在一定的时间间隔后向服务器发送请求。
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 () {
...
});