如何提高 "on keyup" 速度?
How to improve "on keyup" speed?
这是我的代码:
$('#MyInput').on('keyup', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
我想 运行 一个函数,当 input
只有一个字符时。
问题是,如果用户键入一个单词的速度非常快,'keyup'
事件似乎是从第二个字符开始调用的,这意味着它不会调用 ajaxSearch()
方法。
有什么方法可以提高'keyup'
只有1个字符时调用函数的事件速度吗?
当用户打字太快时,he/she可能还没有释放上一个键,所以keyup
技术上还没有发生。
尝试 keypress
而不是 keyup
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
编辑
在keypress
input
的value
属性还没有更新,所以赶上keyup
以及 case 用户只输入一个字符.
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
$('#MyInput').on('keyup keypress', function(e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val(),e);
}
});
function ajaxSearch(value,e) {
console.log(value, e.type)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="MyInput">
尝试按键而不是按键
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
这是我的代码:
$('#MyInput').on('keyup', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
我想 运行 一个函数,当 input
只有一个字符时。
问题是,如果用户键入一个单词的速度非常快,'keyup'
事件似乎是从第二个字符开始调用的,这意味着它不会调用 ajaxSearch()
方法。
有什么方法可以提高'keyup'
只有1个字符时调用函数的事件速度吗?
当用户打字太快时,he/she可能还没有释放上一个键,所以keyup
技术上还没有发生。
尝试 keypress
而不是 keyup
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
编辑
在keypress
input
的value
属性还没有更新,所以赶上keyup
以及 case 用户只输入一个字符.
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
$('#MyInput').on('keyup keypress', function(e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val(),e);
}
});
function ajaxSearch(value,e) {
console.log(value, e.type)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="MyInput">
尝试按键而不是按键
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});