【问题标题】:On page live search (instant updating)页面实时搜索(即时更新)
【发布时间】:2011-07-27 20:49:02
【问题描述】:

我想使用谷歌即时搜索我的网站我的网址是http://gamersweb.net/games

所有要搜索的内容都将存在于该页面上,而不是从数据库或其他任何内容中提取。

不久前,我浏览了随机的 jquery 插件,我看到了这个非常酷的类似苹果的插件,它可以使用所有的缩略图并对它们进行排序、更改它们的大小并通过它们进行搜索,它的动画非常酷。我没有给它添加书签,我似乎找不到它。但这也许是我的解决方案,但是,任何事情都可以。我在想也许可以将“rel”标签分配给我所有的“img”标签,并使用搜索来根据查询找到适当的 rel 标签。

【问题讨论】:

    标签: jquery search


    【解决方案1】:

    【讨论】:

    • 感谢您的回答 Shankar,这可以与 img alt、title 或 rel 标签一起使用,还是我必须使用隐藏的 txt?我想让这个页面尽可能简单
    • 我正打算使用这个,非常感谢!看起来不错;)gamersweb.net/games
    • 我们如何处理大型列表?例如,我有 10 个元素,它就像一个魅力,但有 10.000 个,它真的很慢
    【解决方案2】:

    这是您可以使用 Ajax、PHP 和 JQuery 执行的操作。希望这对您有所帮助或开始。

    在此处查看现场演示和源代码。

    http://purpledesign.in/blog/to-create-a-live-search-like-google/

    创建一个搜索框,可以是这样的输入框。

    <input type="text" id="search" autocomplete="off">
    

    现在我们需要聆听用户在文本区域输入的任何内容。为此,我们将使用 jquery live() 和 keyup 事件。在每个按键上 我们有一个 jquery 函数“搜索”,它将运行一个 php 脚本。

    假设我们有这样的 html。我们有一个输入字段和一个列表来显示结果。

     <div class="icon"></div>
     <input type="text" id="search" autocomplete="off">
     <ul id="results"></ul>
    

    我们有一个 Jquery 脚本,它将监听输入字段上的 keyup 事件,如果它不为空,它将调用 search() 函数。这 search() 函数将运行 php 脚本并使用 AJAX 在同一页面上显示结果。

    这里是 JQuery。

    $(document).ready(function() {  
    
        // Icon Click Focus
        $('div.icon').click(function(){
            $('input#search').focus();
        });
    
        //Listen for the event
            $("input#search").live("keyup", function(e) {
            // Set Timeout
            clearTimeout($.data(this, 'timer'));
    
            // Set Search String
            var search_string = $(this).val();
    
            // Do Search
            if (search_string == '') {
                $("ul#results").fadeOut();
                $('h4#results-text').fadeOut();
            }else{
                $("ul#results").fadeIn();
                $('h4#results-text').fadeIn();
                $(this).data('timer', setTimeout(search, 100));
            };
        });
    
    
        // Live Search
        // On Search Submit and Get Results
        function search() {
            var query_value = $('input#search').val();
            $('b#search-string').html(query_value);
            if(query_value !== ''){
                $.ajax({
                    type: "POST",
                    url: "search_st.php",
                    data: { query: query_value },
                    cache: false,
                    success: function(html){
                        $("ul#results").html(html);
    
                    }
                });
            }return false;    
        }
    
    
    
    });
    

    在 php 中,对 mysql 数据库进行查询。 php 将返回将使用 AJAX 放入 html 的结果。这里将结果放入 一个 html 列表。

    假设有一个虚拟数据库,其中包含两个表动物和鸟,其中两个相似的列名“type”和“desc”。

     //search.php
    
    // Credentials
    $dbhost = "localhost";
    $dbname = "live";
    $dbuser = "root";
    $dbpass = "";
    
    //  Connection
    global $tutorial_db;
    
    $tutorial_db = new mysqli();
    $tutorial_db->connect($dbhost, $dbuser, $dbpass, $dbname);
    $tutorial_db->set_charset("utf8");
    
    //  Check Connection
    if ($tutorial_db->connect_errno) {
        printf("Connect failed: %s\n", $tutorial_db->connect_error);
        exit();
    }
        $html = '';
        $html .= '<li class="result">';
        $html .= '<a target="_blank" href="urlString">';
        $html .= '<h3>nameString</h3>';
        $html .= '<h4>functionString</h4>';
        $html .= '</a>';
        $html .= '</li>';
         $search_string = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);
        $search_string = $tutorial_db->real_escape_string($search_string);
    
    // Check Length More Than One Character
    if (strlen($search_string) >= 1 && $search_string !== ' ') {
        // Build Query
        $query = "SELECT *
         FROM animals
         WHERE type LIKE '%".$search_string."%'
         UNION ALL SELECT *
         FROM birf
         WHERE type LIKE '%".$search_string."%'"
         ;
        $result = $tutorial_db->query($query);
            while($results = $result->fetch_array()) {
                $result_array[] = $results;
            }
    
            // Check If We Have Results
            if (isset($result_array)) {
                foreach ($result_array as $result) {
    
                    // Format Output Strings And Hightlight Matches
                    $display_function = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['desc']);
                    $display_name = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['type']);
                $display_url = 'https://www.google.com/search?q='.urlencode($result['type']).'&ie=utf-8&oe=utf-8';
    
                    // Insert Name
                    $output = str_replace('nameString', $display_name, $html);
    
                    // Insert Function
                    $output = str_replace('functionString', $display_function, $output);
    
                    // Insert URL
                    $output = str_replace('urlString', $display_url, $output);
    
    
    
                    // Output
                    echo($output);
                }
            }else{
    
                // Format No Results Output
                $output = str_replace('urlString', 'javascript:void(0);', $html);
                $output = str_replace('nameString', '<b>No Results Found.</b>', $output);
                $output = str_replace('functionString', 'Sorry :(', $output);
    
                // Output
                echo($output);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多