2016-08-04 48 views
2

我有一个keyup函数来搜索表中的数据。我想让加载图像只出现一次。例如,如果用户输入"one",图像将只显示一次,直到显示结果。jQuery - 在键盘上仅显示一次加载图像

我可以在keyup函数上显示图像,但它会根据用户类型显示。例如,如果用户输入"one",图像将出现3次。下面是我的代码示例中,

$("#search").keyup(function(){ 
    var search = $("#search").val(); 
    $("#loading").fadeIn(500); 
    $.post('search_pr.php', 
    { 
     search : search 
    }) 
    .done(function(data){ 
     $("#loading").fadeOut(500); 
     $("#body").html(data); 
    }); 
}); 

回答

2

的状态,您可以使用标志为此,

$(function(){ 
 
var load_img = false; 
 
$("#search").keyup(function(){ 
 
    var search = $("#search").val(); 
 
    
 
    if(!load_img) { 
 
     $("#loading").show();  
 
    } 
 
    load_img = search.length === 0 ? false : true; 
 
    
 
    if(search.length === 0){ 
 
    $("#loading").hide(); 
 
    } 
 

 
    // Rest of your code goes here 
 

 
    }); 
 
});
#loading{ 
 
    display:none; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="search" placeholder="search"> 
 
<div id="loading"> 
 
<i class="fa fa-spinner fa-spin"></i> 
 
    </div>
但是,您应该 复位该标志上 输入focusout or change or blueload_imglength = 0为好,以便 标志不能结合到仅 true当它成为真正 当用户键入关键字。

复位标志

$("#search").on("change",function(){ 
    load_img = false; 
}); 

希望这有助于。

+0

感谢您的帮助。对不起,但我仍然在学习使用jQuery。我可以知道如何重置load_img,或者如果您有任何参考。 – Amran

+0

从开始再次检查答案我更新了所有您需要的代码。我想我可以得到+1这个谢谢 –

+0

对不起!我再次更新答案! –

1

使用全局变量设置附加元素

var isTriggered = 0 

$("#search").keyup(function(){ 
    if (isTriggered == 0) { 
    isTriggered = 1; 
    var search = $("#search").val(); 
    $("#loading").fadeIn(500); 
    $.post('search_pr.php', 
    { 
     search : search 
    }) 
    .done(function(data){ 
     $("#loading").fadeOut(500); 
     $("#body").html(data); 
    }); 
} 
});