Javascript 几毫秒后使用jQuery获取输入值
我想获取输入字段的值并发送一个ajax请求。如果我使用keyup、keypress或change,该值将立即可用并发送请求。我想等待用户,例如等待1或2秒钟,以便他键入整个word,然后发送ajax请求。 我的代码是这样来获取vlaue。谢谢Javascript 几毫秒后使用jQuery获取输入值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想获取输入字段的值并发送一个ajax请求。如果我使用keyup、keypress或change,该值将立即可用并发送请求。我想等待用户,例如等待1或2秒钟,以便他键入整个word,然后发送ajax请求。 我的代码是这样来获取vlaue。谢谢 var timeout = window.setTimeout(function() { $('input#search').keyup(function() { var key = $("#search")
var timeout = window.setTimeout(function() {
$('input#search').keyup(function() {
var key = $("#search").val();
console.log(key);
});
}, 1000);
clearTimeout(timeout);
每次调用函数时,都应清除超时并设置一个新的超时,请尝试以下操作:
(function () {
var timeout = {};
var update = function () {
clearTimeout(timeout);
timeout = setTimeout(function () {
var key = $('#search').val();
console.log(key);
}, 1000);
};
$('input#search').keyup(update);
$('input#search').change(update);
}());
您需要使用计时器,然后使用clearTimeout将其重置为用户类型。这段代码将执行您想要的操作,下面是一个示例
如果您希望提供积极的用户体验,那么这不是最好的方法。您永远不能仅仅因为等待了任意秒数就确定用户已经完成了键入。有些人打字非常慢。您应该考虑触发Ajax请求的窗体旁边的按钮,或者监听文本字段中的“输入”键,然后发出请求。谢谢您的评论。我添加了提交按钮,但我也想在用户输入某些东西时触发Ajax请求。我只想在1秒或2秒后触发ajax请求。@VCode:google search autocomplete可以在没有按钮的情况下工作我没有意识到你可以调用像
$(Start)这样的函数代码>。这样做比开始()有什么好处吗;?谢谢@frenchie,这正是我想要的。@delighteddod:writing$(Start)是writing$(document)的缩写。准备好(Start)
var Timer;
function Start() {
$('#TheInput').keyup(function () {
clearTimeout(Timer);
Timer = setTimeout(SendRequest, 1000);
});
}
function SendRequest() {
var key = $("#TheInput").val();
alert(key);
}
$(Start);