【问题标题】:How to fire a search with instantsearch.js when clicking on a button单击按钮时如何使用 Instantsearch.js 触发搜索
【发布时间】:2016-09-03 06:21:45
【问题描述】:

我正在使用Algolia instantsearch.js,它带有一个非常简单的搜索框和类似http://codepen.io/anon/pen/aNXLBV这样的搜索按钮

我已经用options.searchOnEnterKeyPressOnly 更改了搜索框的行为,我希望在有人点击Search 按钮时也触发搜索。

我确定这是一个 RTFM 问题,但我在这方面找不到任何东西,在 Algolia general JS docs 中也没有,而且它们在某些方面看起来像两个不同的野兽。

那么我怎样才能在 Enter 或点击 Search 按钮时触发搜索?

【问题讨论】:

    标签: javascript search algolia


    【解决方案1】:

    你可以绑定你的按钮点击/提交并调用:

    // search = instantsearch(); ...
    search.helper.search();
    

    确实,这不是一件微不足道/记录在案的事情,而且当你只知道 Instantsearch.js 时,你很难知道。

    我们会努力让它变得更容易。

    【讨论】:

    • [我已经重写了我的上一个。评论,因为我无法编辑] 谢谢你的意见,但我已经尝试过了,但由于它是“重置”,我认为有问题所以我在这里问。例如。尝试搜索并按 Enter,然后搜索其他内容并单击按钮:您将看到您的新搜索被先前的搜索替换。也许我的代码有问题?我用这个:jQuery("#search-btn").click(function () { search.helper.search(); });
    • 你能提交一个 jsfiddle 来演示这个问题吗?谢谢
    • 当然,这很粗糙,并且基于您的起始演员索引。 jsfiddle.net/khrkr8pj/2 尝试搜索某些内容并按Enter,然后尝试其他内容并单击搜索。您应该看到搜索词设置回前一个。谢谢!
    • 非常感谢,我要去看看这个错误
    • 哦,我明白了,你想让我在 Github 上填写问题吗?谢谢!
    【解决方案2】:

    假设你有一个id为search-button的按钮和一个id为search-box的搜索框

    如果您使用 jquery,请这样做..

    var search = instantsearch({
        appId: algoliaCredential.appId,
        apiKey: algoliaCredential.searcKey,
        indexName: 'INDEXNAME'
    });
    
    search.start();
    
    $('#search-button').on('click', function(){
        var query = $('#search-box').val().trim();
        search.helper.setQuery(query).search(); //Set the query and search
    })
    

    我有类似的问题,我就是这样做的。希望这会奏效。

    【讨论】:

    • 嘿,这是一个很好的解决方法,直到它得到修复!但是var query = trim($('#search-box').val()); 不起作用,看来您借用了 PHP 进行修剪 呵呵;)我已经编辑了您的答案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多