2011-04-03 140 views
1

下面是我的jQuery UI代碼,我面臨的問題是,無論用戶輸入什麼,它立即顯示數組中的所有內容,而不僅僅是接近投入。jQuery UI自動完成自動建議列表不會改變

主要文件:

<html> 
    <head> 
     <link type="text/css" href="jqui/css/ui-lightness/jquery-ui-1.8.11.custom.css" rel="stylesheet" /> 
     <script type="text/javascript" src="jqui/js/jquery-1.5.1.min.js"></script> 
     <script type="text/javascript" src="jqui/js/jquery-ui-1.8.11.custom.min.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function(){ 
    $("#tags").autocomplete({source:"result.php"}); 
    }); 
    </script> 

</head> 
<body> 
<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags"> 
</div> 
</body> 

</html> 

結果文件

<?php 
$arrResults = array('orange', 'apple', 'bannana'); 
// Print them out, one per line 
echo json_encode($arrResults);  
?> 
+0

你米德您自動完成列表是不會根據過濾到你在輸入什麼? – 2011-04-03 11:21:18

+0

是這就是我的意思是 – Kay 2011-04-03 11:25:17

回答

1

你需要像這樣

$req = $_GET['term']; //first get the search keyword as get method 

$arrResults = array('orange', 'apple', 'bannana'); 

$array = array_filter($arrResults, 'mycallback'); 
//filter the array containing search word using call back function 

function mycallback($var) 
{ 
    global $req; 
    if(preg_match('/^'.$req.'/', $var)) 
    {  
     return $var; 
    } 
} 

$array1 = array(); 

//filter null array 
foreach($array as $arr => $val) 
{ 
     if(!empty($val)) 
     { 
       $array1[] = $val; 
     } 

} 

//echo out the json encoded array 
echo json_encode($array1); 
+0

我認爲這種工作已經包含在jquery本身中了嗎? – 2011-04-03 12:40:48

+0

@Jayantha很好不確定...但是這似乎解決了這個問題 – 2011-04-03 12:41:37

+0

thanx這工作,但我希望也許有可能是一個更簡單的方法 – Kay 2011-04-03 12:55:41

0
$("#tags").autocomplete({source:"result.php", dataType:"json"}); 
+0

沒有工作..仍然是同樣的問題 – Kay 2011-04-03 12:51:20

+0

@Kay:我很抱歉,該參數應該是'dataType'不是類型。 – 2011-04-03 17:05:29

+0

。仍然是同樣的問題:( – Kay 2011-04-03 17:54:23