jQuery下拉ajax搜索keydown是落后'

时间:2014-05-14 08:51:43

标签: javascript php jquery ajax

我有一个下拉列表,它由一个php文件通过ajax回显。网站上的用户可以使用此下拉列表搜索他的朋友。我有以下代码(验证未显示):

var textbox = $('#participant-textbox');
$(function(){
                    textbox.keydown(function(e) {
                        $.ajax({
                            type:"POST",
                            url:"sources/friend_search.php",
                            data:{value:document.getElementById('participant-textbox').value}
                        })

                            .done(function(rtrn) {
                                $('.invite-participants-dropdown').html(rtrn);
                            });

                        if(!DropdownState)
                            {
                                dropdown.show();
                                DropdownState=true;
                            }

                    });
});

虽然这样可行,但是ajax却落后了一步。我的意思是:

当我在文本框中输入“a”时,它不会显示任何内容。

enter image description here

当我输入'ab'时,它应该显示'abhishek'(我使用LIKE子句进行搜索),但它只搜索%a%,因此会显示所有朋友的a名。

enter image description here

当我输入'abh'时,它现在应该搜索%abh%,而它会搜索%ab%(在之前的请求中应该是这种情况)。

enter image description here

我想不出任何其他方式来解释这一点。我在这里缺少什么?

2 个答案:

答案 0 :(得分:5)

使用keyup()代替keydown

keydown
Fires when the user depresses a key. It repeats while the user keeps the key depressed.

keyup
Fires when the user releases a key, after the default action of that key has been performed.

答案 1 :(得分:0)

使用Keyup事件代替keydown

 textbox.keyup(function(e) {...

keydown :用户按下某个键时触发。当用户按下键时,它会重复。 \ 的 KEYUP 在用户释放密钥后,在执行该密钥的默认操作后触发。

有关详细信息,请参阅this