jQuery表单自动提交

jQuery表单自动提交,jquery,ajax,Jquery,Ajax,我正在尝试编写一个自动提交表单(类似于google instant),现在我正在使用以下脚本: $(document).ready(function() { $('#string').change(function(){ var url = $(this).val(); $('#area').load('cgi/test.pl',{string:url}); }); }); 现在的问题是,在use完成键入后,他需要在输入字段外单击。我尝试过使用o

我正在尝试编写一个自动提交表单(类似于google instant),现在我正在使用以下脚本:

$(document).ready(function() {
    $('#string').change(function(){
        var url = $(this).val();
        $('#area').load('cgi/test.pl',{string:url});
    });
});
现在的问题是,在use完成键入后,他需要在输入字段外单击。我尝试过使用
onkeyup
等来代替
change
,但首先这会导致大量的请求,其次,如果在字段中粘贴文本,它将不起作用。我还尝试将javascript
setTimeout
与脚本结合使用,但实际上无法使其正常工作

基本上,我所追求的是自动提交脚本,它可以“检测”用户何时仍在键入(因此提交会有某种延迟),还可以检测文本何时已粘贴到输入字段

为任何建议干杯。

我将使用实现“去抖动”(示例:)


这样,您就可以使用
keyup
。要解释用户粘贴文本的原因,请保留
change
处理程序;当
change
触发时,只需调用
keyup
处理程序。

为什么
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);
    };
});

我用
setTimeout
实现它的方法是,我无法让脚本提交完整的字符串,它总是提交缺少最后一个或两个字符的字符串(取决于我键入的速度),不幸的是,我找不到该版本的脚本。无论如何,为上面的脚本干杯,我会尽快测试它,怀疑这与你没有清除之前的超时有关。为建议干杯,我会检查它!