Javascript 在键盘上提交表格。但并非每次击键都如此

Javascript 在键盘上提交表格。但并非每次击键都如此,javascript,forms,jquery-plugins,onkeyup,Javascript,Forms,Jquery Plugins,Onkeyup,我目前正在使用它来获取结果,无需输入、单击或提交表单,只需键入: <script type="text/javascript"> $(function() { $("#Form_id").bind('keyup',function() { var value = $('#Input_id').val(); $.post('process_search

我目前正在使用它来获取结果,无需输入、单击或提交表单,只需键入:

<script type="text/javascript">
            $(function() {
                $("#Form_id").bind('keyup',function() {
                    var value = $('#Input_id').val();
                    $.post('process_search.php?term='+value+'&buscar=1',{value:value}, function(data){
                        $("#router").html(data);
                    });
                    return false;
                });
            });
        </script>

$(函数(){
$(“#Form_id”).bind('keyup',function(){
var值=$('#Input_id').val();
$.post('process_search.php?term='+value+'&buscar=1',{value:value},函数(数据){
$(“#路由器”).html(数据);
});
返回false;
});
});
好的,这个很好用。但有一个大大小小的问题:如果我输入“hello”,会发送4个请求

为了解决这个问题,我想我可以尝试检测何时键入了空白,然后提交表单。解决方案A

另一个解决方案是检测最后一次击键时间是在x毫秒内,解决方案2

我两个都喜欢,但我会对这两个问题提出自己的看法,还有corse的一些帮助:$


谢谢

最简单的方法是使用setTimeout和clearTimeout,这样您可以在x毫秒之后进行延迟

$(function () {
    var delay;
    $("#Form_id").bind('keyup', function () {
        var value = $('#Input_id').val();
        clearTimeout(delay)
        delay = setTimeout(function () {
            $.post('process_search.php?term=' + value + '&buscar=1', {
                value: value
            }, function (data) {
                $("#router").html(data);
            });
        }, 1000);

        return false;
    });
});

上的简单示例。

最简单的方法是使用setTimeout和clearTimeout,这样您就可以在x毫秒之后进行延迟

$(function () {
    var delay;
    $("#Form_id").bind('keyup', function () {
        var value = $('#Input_id').val();
        clearTimeout(delay)
        delay = setTimeout(function () {
            $.post('process_search.php?term=' + value + '&buscar=1', {
                value: value
            }, function (data) {
                $("#router").html(data);
            });
        }, 1000);

        return false;
    });
});
上的简单示例。

Ext Core让您可以像下面这样轻松地完成。查看Ext.Element的文档

function sendRequest(e) {...}
Ext.get("#Form_id").on('keyup', sendRequest, null, {buffer: 1000});
我知道这篇文章是关于jQuery的,我的观点是这个功能可以抽象,我不敢相信jQuery没有提供这个选项。

extcore让你像下面这样轻松地完成它。查看Ext.Element的文档

function sendRequest(e) {...}
Ext.get("#Form_id").on('keyup', sendRequest, null, {buffer: 1000});

我知道这篇文章是关于jQuery的,我的观点是这个功能可以抽象,我不敢相信jQuery没有提供这个选项。

最好在安静的时间内完成(即最后3秒钟没有按键或类似的事情),但整个方法看起来相当网络对抗,除非你是在促进实时协作(比如谷歌文档)或渐进式搜索(比如谷歌)之类的。最好是在安静的时间内进行(比如,最后3秒钟没有按键或类似的事情),但整个方法看起来相当网络对抗,除非你在促进实时协作(比如谷歌文档)或渐进式搜索(比如谷歌)之类的。谢谢你,我的朋友!我会试着让你知道:),那是1s的延迟,对吗?这正是我需要的!谢谢你,我的朋友!我会试着让你知道:),那是1s的延迟,对吗?这正是我需要的!