这是我的代码:
$('#MyInput').on('keyup', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
我想在input
只有一个字符时运行一个函数。
问题在于,如果用户非常快速地输入单词,则似乎从第二个字符开始调用'keyup'
事件,这意味着它不会调用ajaxSearch()
方法。
有什么方法可以提高'keyup'
事件的速度来调用只有1个字符的函数吗?
答案 0 :(得分:7)
当用户输入速度过快时,他/她可能尚未发布上一个密钥,因此keyup
技术上还没有发生。
尝试使用keypress
代替keyup
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
修改强>
在keypress
input
' value
属性尚未更新,因此如果用户仅输入一个,请抓住keyup
以及单个字符。
$('#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">
&#13;