0

以前にデザインしたWebサイトの1つから取得した検索候補コードがあります。コード全体を新しいサイトにコピーしましたが、何らかの理由で検索候補が機能しないことを知っています。

私のコードを見てください:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<!--search suggestions-->
<script type="text/javascript">
function lookup(inputString) {
if(inputString.length == 0) 
{
$('#suggestions').hide();
}
else
{
$.post("suggest.php", {queryString: ""+inputString+""}, function(data){
if(data.length > 0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
} 
function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
function outoffocus() {
setTimeout("$('#suggestions').hide();", 200);
}
</script>

私のPHP:

<?php
if(isset($_POST['inputString']))
{ 
  $inputString = safe($_POST['inputString']);
  if(mb_strlen($inputString) > 0)
  {
     $query = $db->query("SELECT title FROM table WHERE title LIKE '$inputString%' LIMIT 5");
     if($db->num_rows($query) > 0) 
     {
        while($result = $db->fetch_array($query))
        {
           echo "<li onClick=\"fill('".$result['title']."');\"><a href='".$config['site_dir']."/".$result['title']."/'>".$result['title']."</a></li>";
        }
     }
     else
     {
        echo "NOTHING HERE GO AWAY";
     }
  } 
}
?>

PHPファイルとSQLSTATMENTの両方をテストしました。どちらも機能しているようです。

問題はHTMLとJQUERYにあると思います

これが私のHTMLです

<form id="search" action="{$url}/search.php" method="get"> 
<input type="text" name="search" id="inputString" onkeyup="lookup(this.value);" onblur="outoffocus()" onfocus="lookup(this.value);"/>
<input type="submit" value="&nbsp;" />
<div class="suggestionsBox" id="suggestions" >
 <div class="suggestionList" id="autoSuggestionsList">
&nbsp;
</div>
</div>
</form>

答える前に知っておくべき2つのこと:sql..に接続するためにsuggest.phpにリンクされているファイルがあるので問題はありません。私がそこに置いたクエリは、元のファイルにあるクエリとまったく同じではないので、問題はMYSQLにないことを確認できます。それは私が与えたコードのどこかにあります。

4

1 に答える 1

1

次の機能を変更してみてください。

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

function fill(thisValue) {
  $('#inputString').val(thisValue);
  setTimeout(function() {
    $('#suggestions').hide(); }, 200);
}
function outoffocus() {
  setTimeout(function() {
    $('#suggestions').hide();}, 200);
}
于 2013-01-16T03:28:23.283 に答える