jQuery keyup 获取一次按下的所有字符
jQuery keyup get all the characters pressed at a time
如何一次按下所有字符?我有一个 500 毫秒的计时器,我想按下其中的所有字符。假设我按得非常快 "asd",那么我想使用 "asd" 作为搜索字符串,而不仅仅是 "d"。这是我的想法:
var mytimer;
$filter_container.on('keyup',function(key){
// getting key from ascii
var mykey = get_key_from_ascii(key);
clearTimeout(mytimer);
var $item = $(this);
var $item2 = this;
var ms = 500; // milliseconds
mytimer = setTimeout(function() {
// here i want to send the whole character set to search
my_auto_complete($item, key, $item2);
}, ms);
});
这可能对你有用。每次按下一个键时它都会重置计时器,并且通过将计时器 var 包含在函数表达式中,您可以限制它的范围。它还会检查是否有空输入,如果有人在 500 毫秒之前点击外部,它会 运行。
(function () {
var timer = 0,
input = $('#search'),
label = $('#search-label');
function checkSearch() {
var val = input.val();
if (val) {
doSearch(val);
} else {
label.text('');
}
}
function doSearch(val) {
label.text('Searching for ' + val);
}
input.on('keyup', function (e) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(checkSearch, 500);
});
input.blur(function () {
checkSearch();
});
})();
无需设置调用自动完成功能的时间间隔,您只需在keyup上获取返回值并将其发送到自动完成功能即可。
$("#kad").on('keyup',function(){
$("#text").html($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="kad" />
<p id="text"> </p>
试试这个:
var mytimer;
var collectedKeys = [];
$filter_container.on('keyup',function(key){
// getting key from ascii
var mykey = get_key_from_ascii(key);
// push key to array of keys
collectedKeys.push(mykey);
my_auto_complete($item, collectedKeys, $item2);
});
// after 500 ms, clear keys array
mytimer = setTimeout(function() {
collectedKeys = [];
}, 500);
每次按下不同的键时都会调用 keyUp。您需要按照您的意愿将所有按下的键连接到一个数组或字符串中,代码如下:
var str="";
var mytimer;
$('body').on('keyup',function(e){
// getting key from ascii
str = str + String.fromCharCode(e.which);
mytimer = setTimeout(function() {
// here i want to send the whole character set to search
alert(str);
}, 500);
});
我已经测试了 Fiddle Here 点击右下角的面板然后按几个键检查
如何一次按下所有字符?我有一个 500 毫秒的计时器,我想按下其中的所有字符。假设我按得非常快 "asd",那么我想使用 "asd" 作为搜索字符串,而不仅仅是 "d"。这是我的想法:
var mytimer;
$filter_container.on('keyup',function(key){
// getting key from ascii
var mykey = get_key_from_ascii(key);
clearTimeout(mytimer);
var $item = $(this);
var $item2 = this;
var ms = 500; // milliseconds
mytimer = setTimeout(function() {
// here i want to send the whole character set to search
my_auto_complete($item, key, $item2);
}, ms);
});
这可能对你有用。每次按下一个键时它都会重置计时器,并且通过将计时器 var 包含在函数表达式中,您可以限制它的范围。它还会检查是否有空输入,如果有人在 500 毫秒之前点击外部,它会 运行。
(function () {
var timer = 0,
input = $('#search'),
label = $('#search-label');
function checkSearch() {
var val = input.val();
if (val) {
doSearch(val);
} else {
label.text('');
}
}
function doSearch(val) {
label.text('Searching for ' + val);
}
input.on('keyup', function (e) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(checkSearch, 500);
});
input.blur(function () {
checkSearch();
});
})();
无需设置调用自动完成功能的时间间隔,您只需在keyup上获取返回值并将其发送到自动完成功能即可。
$("#kad").on('keyup',function(){
$("#text").html($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="kad" />
<p id="text"> </p>
试试这个:
var mytimer;
var collectedKeys = [];
$filter_container.on('keyup',function(key){
// getting key from ascii
var mykey = get_key_from_ascii(key);
// push key to array of keys
collectedKeys.push(mykey);
my_auto_complete($item, collectedKeys, $item2);
});
// after 500 ms, clear keys array
mytimer = setTimeout(function() {
collectedKeys = [];
}, 500);
每次按下不同的键时都会调用 keyUp。您需要按照您的意愿将所有按下的键连接到一个数组或字符串中,代码如下:
var str="";
var mytimer;
$('body').on('keyup',function(e){
// getting key from ascii
str = str + String.fromCharCode(e.which);
mytimer = setTimeout(function() {
// here i want to send the whole character set to search
alert(str);
}, 500);
});
我已经测试了 Fiddle Here 点击右下角的面板然后按几个键检查