$(' #country_name')。autocomplete({ source:function(request,response){ $就({ url:' autofill.php', dataType:" json", 数据:{ name_startsWith:request.term, 输入:$('#search_variable')。val() }, 成功:函数(数据){ //警报(数据) 响应($ .map(data,function(item){ 返回{ label:item, 值:项目 }; })); } });
}, autoFocus: true, minLength: 3 });
autofill.php
答案 0 :(得分:1)
不应该返回结果,因为你永远不会启动searchFilter
,如果你使用回车,你会看到if (event.keyCode == 13) return false;
keyCode 13 == ENTER,这意味着你在调用searchFilter();
之前返回false。
删除if (event.keyCode == 13) return false;
答案 1 :(得分:1)
你需要使用"承诺超时"像这样:
var searchTimer = null;
var searchInput = $('#country_name');
var searchResult = $('.contentText');
searchInput.on('keyup', function() {
clearTimeout(searchTimer);
searchTimer = setTimeout(function() {
var val = $.trim(searchInput.val());
if (val) {
$.ajax({
url: 'searchorder.php?search_value=' + val,
cache: false, // deny cache GET requests
success: function(data) {
searchResult.html(data);
}
});
}
}, 300);
});
答案 2 :(得分:1)
演示http://jsfiddle.net/togr18Lb/1/
好的,这是你的解决方案。
在制作新请求时中止任何先前的请求,以免使服务器泛滥。
等待用户停止输入,以减慢请求速度。
按钮有效,所以我们需要做的就是绑定keyup并更改输入字段以触发该按钮,而不是重复代码。我们使用jQuery执行此操作,而不是使用onkeyup=""
。
为了确保在按下回车键时我们没有让不必要的请求返回false是正确的,但我们使用.preventDefault()
代替。
<input name="search_value" id="country_name" />
的jQuery
var searchFilterXhr;
var searchTimeout;
$(function(){
// bind keyup (and change) to trigger the button that causes the search
$('#country_name').on('keyup change', function(e){
// prevent any default action, like submitting a form on enter.
e.preventDefault();
// if the text field has changed, only then do we search
if ($(this).data('last-value') != $(this).val()) $('#button').trigger('click');
// remember the previous value so that we can check it's changed
$(this).data('last-value', $(this).val());
});
});
function searchFilter(){
//alert("");
$("#loader").show();
var search_variable = $("#search_variable").val();
var search_value = $("#country_name").val();
//alert(search_value);
if (searchFilterXhr) searchFilterXhr.abort();
clearTimeout(searchTimeout);
searchTimeout = setTimeout(function(){
searchFilterXhr = $.ajax({
url: 'searchorder.php?act=save&search_variable=' + search_variable + '&search_value=' + search_value,
success: function(data) {
//alert(data);
$("#loader").hide();
$(".contentText").html(data);
// $("#feedbackcommon"+act_id).show();
}
});
}, 500);
}