我做了一个jQuery自动完成搜索来搜索我的CI应用程序中的页面,返回的JSON数据包括2个元素," slug"页面和"名称"的页面,所以我使用"名称"显示在自动完成列表中,当有人选择结果或按回车键时,它会使用slug重定向到该页面:
$(function() {
$( "#search" ).autocomplete({
source: "index.php/pages/get_pages",
minLength: 2,
select: function(event, ui) {
$(event.target).val(ui.item.value);
window.location.href = "index.php/pages/" + ui.item.slug;
return false;
}
});
$("#search").keypress(function(e){
if (e.which == 13) {
window.location.href = "index.php/pages/no-results";
return false;
}
});
});
现在我添加了另一个选项,当有人输入一个关键字但没有找到结果然后按回车它应该转到"页面"没有结果参数。
此代码在除Firefox之外的所有浏览器上都运行良好,在所有情况下都会转到无结果页面。
只有在找不到结果并且用户输入随机页面名称然后按回车键时,我才需要进入无结果页面。
答案 0 :(得分:2)
我认为这是关于转发问题。按“Enter”按钮时,同时调用“按下”和“自动完成选择”功能。我们应该插入一个if逻辑,以便只执行其中一个。
顺便说一句,我认为在服务器端进行转发操作是合乎逻辑的。
$(function() {
var isSelected = false;
$("#search" ).autocomplete({
source: "index.php/pages/get_pages",
minLength: 2,
select: function(event, ui) {
isSelected = true;
$(event.target).val(ui.item.value);
window.location.href = "index.php/pages/" + ui.item.slug;
return false;
}
});
$("#search").keypress(function(e){
if (e.which == 13) {
if(!isSelected)
{
window.location.href = "index.php/pages/no-results";
}
return false;
}
});
});