我正在尝试编写自动提交表单(类似于Google即时),现在我正在使用此脚本执行此操作:
$(document).ready(function() {
$('#string').change(function(){
var url = $(this).val();
$('#area').load('cgi/test.pl',{string:url});
});
});
现在问题是,在使用完成后,他需要在输入字段外单击。我尝试使用onkeyup
等代替change
,但首先会导致疯狂的请求数量,其次如果您在字段中粘贴文本,则无法使用。我也尝试将javascript setTimeout
与脚本结合使用,但无法真正实现它。
基本上我所追求的是自动提交脚本,当用户仍在输入时“检测”(因此提交的某种延迟),并且还可以检测文本何时被粘贴到输入字段。
欢呼任何建议。
答案 0 :(得分:1)
我会使用doTimeout plugin来实现“debouncing”(例如:http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/)。
这样,您就可以使用keyup
。要考虑用户粘贴文本,请保留change
处理程序;只需在keyup
触发时调用change
处理程序。
答案 1 :(得分:1)
为什么setTimeout
无效?尝试做这样的事情:
$(document).ready(function() {
var currentTimeout = null;
$('#string').keyup(handler);
$('#string').change(handler);
var handler = function() {
if(currentTimeout != null) {
clearTimeout(currentTimeout);
}
currentTimeout = setTimeout(function() {
var url = $(this).val();
$('#area').load('cgi/test.pl',{string:url});
}, 750);
};
});