【问题标题】:Search input text搜索输入文本
【发布时间】:2016-09-01 10:13:00
【问题描述】:

我正在使用bootstrap-tokenfield

我在搜索栏中使用令牌字段,并且有一个小问题,假设我搜索:searchtag1、searchtag2,然后单击搜索并加载我的页面搜索结果在搜索输入中没有 searchtag1, searchtag2

我希望我搜索的标签也留在搜索页面的输入框中,如何做到这一点?

我正在使用默认引导表单

<div class="search">
    <form class="form-inline" role="form" action="{{ url('sonata_search') }}" method="GET">
        <div class="form-group">
            <input id="tags" class="form-control tokenfield" name="search" value="tag, tag2" placeholder="Search" type="text"  />
            <button type="submit" id="sonata_search_submit" class="btnbtn-default">
                <i class="fa fa-search"></i>
            </button>
        </div>
    </form>
</div>

【问题讨论】:

  • 你能展示你完整的html表单和javascript代码吗?
  • 我的整个 seach html 都在这里了,我正在处理 symfony 项目(前半部分),它集成在 symfony 搜索中,所以这就是我现在可用的,有什么方法可以缓存我的搜索单词并显示在结果页面上?

标签: javascript jquery twitter-bootstrap token


【解决方案1】:

您可以使用sessionStorage 或localStorage、cookies,或者您可以使用 AJAX 提交表单,并在 ajax 成功时在输入字段中显示提交的标签,无需重新加载页面。

这是sessionStorage 的示例:

$(function() {
    // on form submit set tags in sessionStorage
    $('form').on('submit', function() {
        var tagsValue = $('#tags').val();
        sessionStorage.setItem('tags', tagsValue);
    });
    // if tags exist in sessionStorage set them as value in input field
    var tagsSession = sessionStorage.getItem('tags');
    if (tagsSession != null){
        $('#tags').val(tagsSession);
    }
    $('#tags').tokenfield();
});

【讨论】:

  • 什么不起作用?你在控制台有什么错误吗?您是否检查过标签是否保存在 sessionStorage 中?它对我来说很好,所以你可能实施错了。
  • N 错误,并且在检查器的 sessionStorage 中我添加了新值,但它没有显示在输入字段中
  • 当我无法重现您的问题时,我很难提供帮助。尝试测试它...在if 等内执行tagsSession 的console.log 等。
【解决方案2】:

HTTP 协议,因此网络服务器是 stateless。 Cookie 和会话变量是解决此问题并实现跨页面状态的最简单方法。

但是有更好的方法。看起来您正在使用 laravel 和 blade,但这种方法对于任何 Web 服务器/库的工作方式大致相同。

您需要做的是send the tags 到搜索“结果”页面。在模板中,您需要想办法用从服务器返回的数据重新创建标签。

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多