Jquery 按键被过早触发

  • 本文关键字:Jquery jquery keypress
  • 更新时间 :
  • 英文 :


我有一个搜索栏。 如果我在该搜索栏中键入某些内容,我想将搜索栏的输入与字符串中的名称实时进行比较:

此数组包含单词 Hundai: allRowsArray[0][1];

这是我的javascript代码:

jQuery("#carsearchbar").keypress(function(){
carname = allRowsArray[0][1];
var searchword = jQuery("#carsearchbar").val();
jQuery("#logger").text(carname.startsWith(searchword)+"|"+carname +"|"+searchword+"|"+searchword.length+"");
});
I type h and it immediately outputs:        true|hundai||0|     
If i type hu it immediately  displays:   true|hundai|h|1|  

如您所见,在将数字或值添加到输入字段之前,正在执行按键触发。因此,假设我想在我的数组中查找 hundai 这个词,我必须键入 hundai 和它后面的空格。或者它只会搜索没有 i 的"hunda"。

有没有办法解决这个问题?也许延迟?延迟听起来像是糟糕的形式。

使用keyup而不是keypress以便从该元素的val()中获取刚刚按下的当前字符:

var allRowsArray = [['someName','hundai']];
jQuery("#carsearchbar").keyup(function(){
carname = allRowsArray[0][1];
var searchword = jQuery("#carsearchbar").val();
jQuery("#logger").text(carname.startsWith(searchword)+"|"+carname +"|"+searchword+"|"+searchword.length+"");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id='carsearchbar' type-'text' />
<span id='logger'></span>