0

我认为这很简单。我从 PHP while 循环中提取的数组中获取了一些结果。

问题是它只允许 1 个结果。当我搜索另一个字符串时,它会替换旧字符串。

我试图自己想出一个解决方案,但我认为我的大脑已经筋疲力尽了,我似乎无法想出一个像样的解决方案。

所以,这是脚本:

<script type="text/javascript">
    function lookup(inputString) {
        if(inputString.length == 0) {
            $('#suggestions').hide();
        } else {
            $.post("ajax-search.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>

这是HTML:

               <form>
                <textarea cols="80" rows="2" id="faq_search_input" name="query" dir="rtl" disabled></textarea>
                <textarea id="inputString" onkeyup="lookup(this.value);" onblur="fill();" cols="80" rows="2" placeholder="Write here"></textarea>
                <div class="suggestionsBox" id="suggestions" style="display: none;">
                    <img src="images/upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
                    <div class="suggestionList" id="autoSuggestionsList">
                        &nbsp;
                    </div>
                </div>
            </form>

这是PHP:

<?php 
include("config.inc"); //Including our DB Connection file

if(isset($_POST['queryString'])) {
    $queryString = $db->real_escape_string($_POST['queryString']);
        if(strlen($queryString) > 0) {
            $query = $db->query("SELECT * FROM directions WHERE eng_dir LIKE '%$keyword%' OR attr LIKE '%$keyword%'");

            if($query) {
                while ($result = $query ->fetch_object()) {             
                    echo '<li value="'.$result->dir_id.'" onClick="fill(\''.$result->eng_dir.'\');">'.$result->eng_dir.'</li>';
                }
            }
        }
}
?>

我尝试对 MySQL 使用 preg 方法,但我认为我做错了什么。问题是,我可以很容易地通过 jQuery 做到这一点,但是由于我想使用 MySQL 的元素数量。正因为如此,我现在被困在岩石和坚硬的地方之间。

即使是朝着正确的方向简单地推动也是可以的。我知道我一定遗漏了一些非常明显的东西。

4

1 回答 1

4

据我了解,我认为您必须在每次搜索时将结果附加到.appendTo()而不是使用html(),因为会将html()目标 id/class 上的所有数据替换为新数据。

$.post("ajax-search.php", {queryString: ""+inputString+""}, function(data){
            if(data.length >0) {
                $('#suggestions').show();
                $(data).appendTo('#autoSuggestionsList');
            }
        });
于 2013-06-17T17:04:02.170 回答