我有此代码适用于youtube自动填充建议:
$(function(){
$('#input-field').keyup(function(){
var val = $(this).val();
jQTubeUtil.suggest(val, function(response){
var html = '';
for(s in response.suggestions){
var sug = response.suggestions[s];
html += '<li class="li-class"><a href="#">'+sug+'</a></li>';
}
if (response.suggestions.length)
$('#autocomplete').html(html).show();
else
$('#autocomplete').hide();
});
});
});
如果按下箭头键(键代码40/38),如何停止发出请求? 我知道它与'!'有关或事件'.not',但我的努力没有得到回报。
答案 0 :(得分:2)
如果密钥位于这些值之间,您可以简单地返回,有效地停止函数执行。
$(function(){
$('#input-field').keyup(function(event){
if (event.which >= 38 && event.which <= 40)
return;
...
});
});
答案 1 :(得分:2)
在$('#input-field').keyup(function(){
<{1}}中添加变量,例如e
$('#input-field').keyup(function(e){
if(e.keyCode===38 /*Up key */ || e.keyCode === 40 /*key down */) { return ;}
// Rest of your code...
请注意,您也可能需要检查左右键,但不要阻止这些但是取消您正在对“其余代码”执行的调用:
$(function(){
$('#input-field').keyup(function(e){
if(!(e.keyCode>=37 && e.keyCode <= 40)) {
var val = $(this).val();
jQTubeUtil.suggest(val, function(response){
var html = '';
for(s in response.suggestions){
var sug = response.suggestions[s];
html += '<li class="li-class"><a href="#">'+sug+'</a></li>';
}
if (response.suggestions.length)
$('#autocomplete').html(html).show();
else
$('#autocomplete').hide();
});
}
});
});
答案 2 :(得分:2)
尝试此操作取消一系列键:
$(function(){
$('#input-field').keyup(function(e){
if (e.which >= 38 && e.which <= 40)
e.preventDefault();
}
}