Отправка формы на ключ. Бутут не на каждом ключе - PullRequest
0 голосов
/ 25 марта 2011

Я в настоящее время использую это, чтобы получить результаты, не нажимая кнопку или отправляя форму, просто набрав:

<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 запроса.

Чтобы решить эту проблему, я подумал, что могу попытаться определить, когда пробел набрал текст, и затем отправить форму. Раствор А

Другим решением было бы определить, когда последний удар по клавишам был в х миллисекундах, решение 2

Мне нравятся оба, но я хотел бы высказать мнение по обоим, и некоторую помощь corse: $

Спасибо!

Ответы [ 2 ]

4 голосов
/ 25 марта 2011

Самый простой способ - использовать 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 голос
/ 25 марта 2011

Ext Core http://docs.sencha.com/core/ позволяет вам сделать это легко, как показано ниже.Посмотрите документацию для Ext.Element

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

Я знаю, что пост был о jQuery, я хочу сказать, что эту функциональность можно абстрагировать, и я не могу поверить, что jQuery не предлагает такую ​​возможность.*

...