jQuery表单自动提交

时间:2010-12-01 21:36:40

标签: jquery ajax

我正在尝试编写自动提交表单(类似于Google即时),现在我正在使用此脚本执行此操作:

$(document).ready(function() {
    $('#string').change(function(){
        var url = $(this).val();
        $('#area').load('cgi/test.pl',{string:url});
    });
});

现在问题是,在使用完成后,他需要在输入字段外单击。我尝试使用onkeyup等代替change,但首先会导致疯狂的请求数量,其次如果您在字段中粘贴文本,则无法使用。我也尝试将javascript setTimeout与脚本结合使用,但无法真正实现它。

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

欢呼任何建议。

2 个答案:

答案 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);
    };
});