我一直在为一个客户的网站工作一段时间。该网站使用即时搜索搜索框,当用户开始在文本输入中键入字符时,使用AJAX获取搜索结果并立即显示在同一网页中。除了Internet Explorer之外,所有主流浏览器的设置都完美无缺(至少9-11,Edge似乎有所借口)。 核心代码如下:
(function($) {
// Tracking variable for AJAX requests
var request = null;
function searchQuery(query){
console.log("Search query received");
request = $.ajax({
method: "get",
url: icl_home + "wp-json/query/v1/search/" + query,
beforeSend : function(){
if(request != null){
// If a request exists already, cancel it
request.abort();
} else{
// Set loading state to signify loading
// This will output a spinner on the object
$("nav .search").addClass("loading");
}
},
success: function(data){
console.log("Query returned");
// On data get, push it to the right function
formatResults(data);
// Reset loading state
$("nav .search").removeClass("loading");
// Reset request
request = null;
}
});
}
$("input#search").keyup(function(e){
console.log("Trigger keyup");
searchQuery($(this).val());
});
})(jQuery); // Fully reference jQuery after this point.
如您所见,意图很简单。问题是Internet Explorer似乎无法识别我们的keyup处理程序,这对于该功能的运行至关重要。我已经尝试用keydown / keypress替换处理程序,我已经尝试通过使用纯javascript注册事件来挑出jQuery,但还没有任何工作。
您对我们在哪里寻找可能存在的问题有任何建议吗?