【问题标题】:Ajax jquery searcherAjax jquery 搜索器
【发布时间】:2012-12-02 18:10:47
【问题描述】:

您好,我最近在一些教程的帮助下编写了这个脚本。 “问题”是我希望能够手动插入名称。就像现在一样,如果我输入一个不存在于 db 中的名称,然后单击输入字段,它会自动删除我输入的文本。我不希望手动输入的文本在那里,如果用户点击输入或使用选项卡,建议 div 必须淡出。

<script type="text/javascript">
    function lookup(inputString) {
        if(inputString.length == 0) {
            // Hide the suggestion box.
            $('#suggestions').hide();
        } else {
            $.post("../autofill_institution.php", {queryString: ""+inputString+""}, function(data){
                if(data.length > 0) {
                    $('#suggestions').show();
                    $('#autoSuggestionsList').html(data);
                }
            });
        }
    } // lookup

    function fill(thisValue) {
            $('#inputString').val(thisValue);
            setTimeout("$('#suggestions').hide();", 200);
    }
</script>

【问题讨论】:

    标签: jquery search live erase


    【解决方案1】:

    要在输入失去焦点时隐藏建议列表,您可以执行以下操作

    $("idoftheinputfield").on("blur",function(e){
        $('#suggestions').hide()
    })
    

    这让我思考为什么当焦点丢失时你的输入字段会被清除。无论如何,如果你想保留手动输入的值,你可以像这样调整它:

    $("idoftheinputfield").on("blur",function(e){
        var mycurrentvalue = $(this).val();
        $(this).val(mycurrentvalue);
        $('#suggestions').hide()
    })
    

    希望这会有所帮助..

    【讨论】:

    • saraf->您的第一个解决方案成功地消除了建议。但是第二个技巧没有奏效:/ :)
    • 嗯...我不知道这个错误到底是什么,但发现如果我使用旧版本的 og Jquery 就可以了!想知道:/
    • hmmm 很奇怪...第二个是否有任何错误...您可以在此处看到它的运行情况jsfiddle.net/p88Sv
    【解决方案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 事件。在每个 keyup 上,我们都有一个 jquery 函数“search”,它将运行一个 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
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多