我有这个代码,它是为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',但我的努力没有得到回报。
如果键在这些值之间,您可以简单地返回,有效地停止函数执行。
$(function(){
$('#input-field').keyup(function(event){
if (event.which >= 38 && event.which <= 40)
return;
...
});
});
在:$('#input-field').keyup(function(){
中添加一个变量,类似于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();
});
}
});
});
尝试取消一系列密钥:
$(function(){
$('#input-field').keyup(function(e){
if (e.which >= 38 && e.which <= 40)
e.preventDefault();
}
}