Jquery按键过早被解雇

时间:2018-02-17 10:42:54

标签: jquery keypress

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

这个数组包含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|  

正如您所看到的,在将数字或值添加到输入字段之前正在执行keypess触发。所以我想说我想在我的数组中寻找hundai这个词,我必须输入hundai和它背后的空间。或者它只会搜索" hunda"没有我。

有解决方法吗?也许是延迟?延迟听起来像是糟糕的形式。

1 个答案:

答案 0 :(得分:2)

使用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>