jQuery自动完成在Firefox中输入keypress动作不能正常工作

时间:2012-11-22 08:01:39

标签: jquery firefox autocomplete keypress

我做了一个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之外的所有浏览器上都运行良好,在所有情况下都会转到无结果页面。

只有在找不到结果并且用户输入随机页面名称然后按回车键时,我才需要进入无结果页面。

1 个答案:

答案 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;
        }
    });
});