如何提高"on keyup"的速度?

Joa*_*ind 2 javascript jquery onkeyup

这是我的代码:

$('#MyInput').on('keyup', function (e) {
      if ($(this).val().length == 1) {
          ajaxSearch($(this).val());
     }
});
Run Code Online (Sandbox Code Playgroud)

我想在input只有一个字符的情况下运行一个函数.

问题是如果用户真的很快输入一个单词,那么'keyup'似乎从第二个字符开始调用该事件,这意味着它不会调用ajaxSearch()方法.

'keyup'当它只有1个字符时,有没有办法提高事件的速度来调用它?

gur*_*372 7

当用户键入太快时,他/她可能还没有释放以前的键,所以从keyup技术上来说还没有发生.

尝试keypress而不是keyup

$('#MyInput').on('keypress', function (e) {
      if ($(this).val().length == 1) {
          ajaxSearch($(this).val());
     }
});
Run Code Online (Sandbox Code Playgroud)

编辑

keypress inputvalue财产已不尚未更新,所以赶上keyup以及万一用户只输入一个字符.

$('#MyInput').on('keypress', function (e) {
      if ($(this).val().length == 1) {
          ajaxSearch($(this).val());
     }
});
Run Code Online (Sandbox Code Playgroud)

$('#MyInput').on('keyup keypress', function(e) {
  if ($(this).val().length == 1) {
    ajaxSearch($(this).val(),e);
  }
});

function ajaxSearch(value,e) {
  console.log(value, e.type)
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="MyInput">
Run Code Online (Sandbox Code Playgroud)


Nis*_*Edu 5

尝试按键而不是键盘

$('#MyInput').on('keypress', function (e) {
      if ($(this).val().length == 1) {
          ajaxSearch($(this).val());
     }
});
Run Code Online (Sandbox Code Playgroud)