如何使用Jquery创建实时搜索,我使用keypress或keyup事件来循环查询,但是如果我键入3个字符或更多字符,AJAX将执行3次或更多次。
My form:
<input class="keyword-search" type="text" name="s" autocomplete="off" placeholder="Where do you want to go?">这里我的AJAX:
<script>
jQuery(document).ready(function(){
(function($){
$(".keyword-search").keypress(function(){
var keyword = $(this).val();
$(".search-appear").empty();
$.ajax({
type: "post",
url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
data: { action: 'get_tour', keyword: keyword },
beforeSend: function() {$("#loading").fadeIn('slow');},
success: function(data) {
$("#loading").fadeOut('slow');
$(".search-appear").append(data);
}
});
});
})(jQuery);
});
</script> --这是我的演示函数:
function get_tour()
echo 'Do something!';
?>
<?php die(); }这是当我键入3个字符时的结果:第3类字符,我键入2字符:第2类字符,谁可以帮助我工作1次,无论多少键按。否则就没问题了!非常感谢!!
发布于 2017-05-04 16:26:18
将ajax添加到ajaxFunction中,如果值大于3,则当用户键入或粘贴内容到搜索中时,这将有效。
ajaxFunction将会是这样的:
var ajaxFunction = function( data ) {
$.ajax({
type: "post",
url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
data: { action: 'get_tour', keyword: data },
beforeSend: function() {$("#loading").fadeIn('slow');},
success: function(data) {
$("#loading").fadeOut('slow');
$(".search-appear").append(data);
}
});
}
}
$(document).ready(function(){
var ajaxFunction = function( val ){
$('#out').text('Val: ' + val);
}
$('#search').on('keyup paste',function(){
if(this.value.length >= 3)
ajaxFunction(this.value);
});
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="search">
<div id="out"></div>
https://stackoverflow.com/questions/43788120
复制相似问题