Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何改进”;关于keyup“;速度_Javascript_Jquery_Onkeyup - Fatal编程技术网

Javascript “如何改进”;关于keyup“;速度

Javascript “如何改进”;关于keyup“;速度,javascript,jquery,onkeyup,Javascript,Jquery,Onkeyup,这是我的密码: $('#MyInput').on('keyup', function (e) { if ($(this).val().length == 1) { ajaxSearch($(this).val()); } }); 我想在输入只有一个字符时运行函数 问题是,如果用户键入单词的速度非常快,那么'keyup'事件似乎是从第二个字符开始调用的,这意味着它不会调用ajaxSearch()方法 当函数只有一个字符时,有没有办法提高调用该函数的事件速

这是我的密码:

$('#MyInput').on('keyup', function (e) {
      if ($(this).val().length == 1) {
          ajaxSearch($(this).val());
     }
});
我想在
输入只有一个字符时运行函数

问题是,如果用户键入单词的速度非常快,那么
'keyup'
事件似乎是从第二个字符开始调用的,这意味着它不会调用
ajaxSearch()
方法


当函数只有一个字符时,有没有办法提高调用该函数的事件速度?

当用户键入太快时,他/她可能尚未释放上一个键,因此技术上还没有发生

尝试按
keypress
而不是
keypup

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

按键上
输入
属性尚未更新,因此,如果用户只输入一个字符,则捕获
按键

$('#MyInput').on('keypress', function (e) {
      if ($(this).val().length == 1) {
          ajaxSearch($(this).val());
     }
});
$('#MyInput')。打开('keyup keypress',函数(e){
if($(this).val().length==1){
ajaxSearch($(this).val(),e);
}
});
函数ajaxSearch(值,e){
console.log(值,e.type)
}

尝试按键盘而不是按键盘

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

无法想象它在第二个角色被触发。。。这是你发现的第一个角色的释放。也许你想要按键?粘贴怎么样?好的。。。但是当我使用
keypress
时,方法
ajaxSearch($(this.val())
没有得到正确的参数,因为在按下键的那一刻,字符还不在输入中。@JoaoWind我已经附上了一个演示,经过一些修改,应该可以处理所有场景。