要启动的功能让我们说用户输入完最后一个类型后的第二个半。我有这段代码,但每次用户创建一种类型时,脚本就会启动,我不想要:
$(document).ready(function()
{
var $firstname = $("#firstname");
$firstname.keyup(function()
{
var content = $("#firstname").val();
$.post("ajax.php", { firstname: content}, function(result){
var contentDiv = $("#ContainerValidation");
contentDiv.fadeOut(400, function(){ contentDiv.html(result); });
contentDiv.fadeIn(400);
contentDiv.fadeOut(5000);
});
});
});
感谢您的帮助。
答案 0 :(得分:7)
我认为启动等待1.5秒的计时器就足够了,如果用户在此期间继续打字就会中止:
function send() {
$.post("ajax.php", { firstname: $firstname.val()}, function(result){
$("#ContainerValidation")
.fadeOut(400, function(){ $(this).html(result); })
.fadeIn(400)
.fadeOut(5000);
});
}
var timer = null;
$firstname.keyup(function() {
clearTimeout(timer);
timer = setTimeout(send, 1500);
});
答案 1 :(得分:3)
你想要的是一个去抖动脚本。
一个非常简单的解决方案是嵌入Underscore.js库,它包含这样一个函数:http://documentcloud.github.com/underscore/#debounce
你会这样使用它:
$firstname.keyup(_.debounce(function () {
var content = $("#firstname").val();
$.post("ajax.php", {
firstname: content
}, function (result) {
var contentDiv = $("#ContainerValidation");
contentDiv.fadeOut(400, function () {
contentDiv.html(result);
});
contentDiv.fadeIn(400);
contentDiv.fadeOut(5000);
});
}, 1500));