2016-06-19 39 views
0

我在jQuery中做了一个实时搜索栏,但是我遇到了问题!jQuery keypress/keydown无法正常工作

$(document).on('keydown', '.searchInput', function(){ // or keypress I have the same result 
    console.log($(this).val()); 
}); 

当我在输入字段.searchInput按下一个按钮,它记录的最后一个值它了。例如,如果我输入a它会记录(空),那么如果我键入s(这样的搜索栏中有as),它会记录a,那么如果我(在搜索栏asd)型d它会记录as等等。我究竟做错了什么?谢谢!

+3

问题是你将事件附加到'keydown'。这将在输入实际发生之前**捕获值。如果你想捕获完整的值,请使用'keyup'事件 –

+0

@AkshayKhandelwal我真的需要使用keydown(或者keypess或任何按键时触发的东西,还有什么我可以使用的?(keydown和keypress都是) 't工作)) – Jim

+1

你是什么意思**需要**。是否有任何需要您说明的要求,或者是否有另一个事件处理程序附加在了键盘上。如果后面是这种情况,那么你仍然可以使用keyup,因为所有的事件处理程序被调用。 –

回答

5

如果我正确地理解了这个问题,您正在查找需要附加keyup事件而不是keydown的文本框中的完整值。

$(document).on('keyup', '.searchInput', function(){ // or keypress I have the same result 
    console.log($(this).val()); 
}); 
+0

不。我想使用keydown,但由于某种原因它不起作用。它记录最后一个值(现在在屏幕上的值),如果我输入了'asdf',它就记录'asd',如果我输入了'asd',它会记录'as'等) – Jim

+1

with keydown你需要使当前密钥的字符准备就绪,并将其附加到不可行的可用字符串中。我建议你改用'keyup'。 –