0

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

<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>

好的,这很好用。但有很大的小问题:如果我输入“你好”会发送 4 个请求。

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

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

我都喜欢,但我会对两者都提出意见,以及一些 corse 的帮助:$

谢谢!

4

2 回答 2

4

最简单的方法是使用 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;
    });
});

jsfiddle上的简单示例。

于 2011-03-25T17:49:47.047 回答
1

Ext Core http://docs.sencha.com/core/让您可以像下面这样轻松地做到这一点。查看 Ext.Element 的文档

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

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

于 2011-03-25T18:17:49.723 回答