我正致力于动态搜索。
当我在#search
输入中写字时,我想要隐藏div #Main
并显示div #search_list
。当我通过按 Ctrl + A &删除我在搜索栏中写的内容时 Backspace ,#search_list
应该隐藏,#Main
div应该再次显示。
现在,当我按 Ctrl + A & Backspace ,div #search_list
未隐藏。
$(document).ready(function(){
$("#search").keyup(function(){
var str= $("#search").val();
if(str == '') {
$( "#Main" ).show();
$( "#search_list" ).hide();
} else{
$.get( "{{ url('home?id=') }}"+str, function( data ) {
$("#Main").hide();
$( "#search_list" ).show().html( data );
});
}
});
});
答案 0 :(得分:1)
科里有正确的想法,但逻辑仍然是错误的。如果您注意到if / else,则两个代码块都隐藏#Main
div并显示#search_list
div。
您只需要在if块中交换hide
和show
方法。
编辑:正如blex指出的那样,您希望在请求新请求之前取消任何待处理的请求。因此,添加一个变量req
,它将保存每个请求,而不是if / else之前的中止请求,如果它存在的话。
$(document).ready(function(){
// the req variable we will use to track if there is already an open request
var req;
$("#search").keyup(function(){
var str= $("#search").val();
// check to make sure a req exists and it hasn't finished
// we only want there to ever be one request, so we use the same variable for every request
if (req != null && req.readyState != 4)
req.abort();
if(str == '') {
$( "#Main" ).show();
$( "#search_list" ).hide();
} else{
req = $.get( "{{ url('home?id=') }}"+str, function( data ) {
$("#Main").hide();
$( "#search_list" ).show().html( data );
});
}
});
});
答案 1 :(得分:0)
我想出了问题,这里的代码对我有用,感谢谁帮助了我
$(document).ready(function(){
$("#search").keyup(function(){
var str= $("#search").val();
if(str === '') {
$( "#Main" ).show();
$("#search_con").hide();
$("#search_con").hide();
} else{
$("#Main").hide();
$( "#search_con" ).show()
$.get( "{{ url('home?id=') }}"+str, function( data ) {
$( "#search_con" ).html( data );
});
}
});
});
答案 2 :(得分:-1)
在按键事件上找到val的长度,并绑定更改,粘贴和焦点事件 想象一下,如果有人粘贴一些文字。