使用Jquery的文本框文本捕获总是'后面的一个字符'

时间:2009-11-04 20:37:16

标签: jquery

我正在尝试使用jquery和keydown事件捕获用户输入。

这是我的代码:

 $(document).ready(function() {
        $("#searchText").keydown(function() {
            var filter = jQuery.trim($(this).val());
            if (filter.length > 3 || filter.length == 0) {
                //hit the index action again and pass the keyword
                $("#results").fadeOut("fast");
                $("#results").load("/Organisation/Index?keyword=" + filter, null, function() {
                    $(this).fadeIn("fast");
                });
            }
        });
    });

在mo这是有效的,除了被捕获的字符串似乎总是被一个字符“过时”这一事实,我必须按另一个键来实际获取我希望传递给我的动作的文本。 / p>

提前致谢!

2 个答案:

答案 0 :(得分:8)

你的问题是'keydown'事件。由于在按下按键时进行了值的处理,其中新按下的字符尚未被记入输入。通过使用'keyup',处理在新按下的字符已添加到值后完成。

 $(document).ready(function() {
        $("#searchText").keyup(function() {
            var filter = jQuery.trim($(this).val());
            if (filter.length < 3 || filter.length == 0) {
                //hit the index action again and pass the keyword
                $("#results").fadeOut("fast");
                $("#results").load("/Organisation/Index?keyword=" + filter, null, function() {
                    $(this).fadeIn("fast");
                });
            }
        });
    });

答案 1 :(得分:0)

您还可以尝试使用bind方法捕获其他“关键笔划”事件,如下所示:

$("#searchText").bind("keyup click blur focus change paste", function(){
    //stuff
});