基于字符串长度失误的JQuery函数

时间:2011-10-04 10:54:34

标签: jquery input

当输入中包含3个或更多字符且不等于占位符时,以下函数应显示面板。

$('#search').keydown(function(){
            $('#header .suggestion').removeClass('visible');
            var slength = $(this).val();
            if(slength.length > 2 && slength != $(this).attr('placeholder')){
                //activate AJAX script
                $('#header .results').addClass('visible');
            }
            else {
                $('#header .results').removeClass('visible');
            }

    });

相反,直到显示5个字符才会显示。这是为什么。

非凡

1 个答案:

答案 0 :(得分:0)

在浏览器处理输入之前调用keydownkeypress事件。在这些事件期间,开发人员可以添加一种方法来阻止用户输入文本。

因此,当您正在收听keydown函数时,$(this).val()不会返回“预期”值。

图像(用户已经专注于输入字段):

{ } <-- Empty input field
    [X] <-- Use presses the X key
    **KEYDOWN**
    **KEYPRESS**
{X} <-- "x" appears in the text field
    **KEYUP**

要获得输入的“预期”值,您必须使用keyup事件而不是keydown