这是我的代码:
$('#MyInput').on('keyup', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});
当input
只有一个字符时,我想运行一个函数。
问题是,如果用户键入一个单词非常快,则'keyup'
事件似乎是从第二个字符开始的,这意味着它不会调用ajaxSearch()
方法。
有什么方法可以提高'keyup'
事件速度,当它具有1个字符时调用该函数?
当用户类型太快时,他/她可能还没有发布过以前的密钥,因此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">
尝试按键而不是键
$('#MyInput').on('keypress', function (e) {
if ($(this).val().length == 1) {
ajaxSearch($(this).val());
}
});