当输入中包含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个字符才会显示。这是为什么。
非凡
答案 0 :(得分:0)
在浏览器处理输入之前调用keydown
和keypress
事件。在这些事件期间,开发人员可以添加一种方法来阻止用户输入文本。
因此,当您正在收听keydown
函数时,$(this).val()
不会返回“预期”值。
图像(用户已经专注于输入字段):
{ } <-- Empty input field
[X] <-- Use presses the X key
**KEYDOWN**
**KEYPRESS**
{X} <-- "x" appears in the text field
**KEYUP**
要获得输入的“预期”值,您必须使用keyup
事件而不是keydown
。