在keyhit上提交表单。但不是每一个关键的打击

时间:2011-03-25 17:46:21

标签: javascript forms jquery-plugins onkeyup

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

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

好的,这很好用。但是有一个很小的小问题:如果我输入'hello'发送4个请求。

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

另一个解决方案是检测最后一个keyhit何时处于x毫秒,解决方案2

我喜欢两者,但我会对两者都提出意见,并且给corse提供一些帮助:$

谢谢!

2 个答案:

答案 0 :(得分: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的简单示例。

答案 1 :(得分: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不会提供这个选项。