2011-03-07 196 views
0

我一直在嘗試一段時間,但我似乎無法讓jQuery自動完成工作。我有一個搜索框,我想要啓用自動填充,名爲#searchBox。我有以下的jQuery代碼:不能讓jQuery自動完成工作

$(function(){ 
    $("input, textarea, select, button").uniform(); 
    $('#searchPost').submit(function(event) { 
    if ($(this).find('#searchBox').val() == '') { 
     event.preventDefault(); 
    } 
    }); 
    $("#searchBox").autocomplete({ 
      source: "php/searchAC.php" 
    }); 
    }); 

,第一部分的皮膚我的形式,第二部分不允許搜索表單提交,如果有一個空場,而最後一部分是自動完成的。這裏是php/searchAC.php:

<?php 
session_start(); 
$con = mysql_connect("localhost","foo","bar"); 
mysql_select_db("coupons", $con); 

$currentZone = $_SESSION["zoneSelected"]; 
$results = mysql_query("SELECT id,retailerName,savingsDetails,dateExp FROM coupons WHERE retailerName LIKE '%" . $_GET['term'] . "%' OR description LIKE '%" . $_GET['term'] . "%' AND dateExp > CURDATE() AND zone='$currentZone' AND approved <> 0"); 
$printResults = array(); 
while($row = mysql_fetch_array($results)) 
{ 
    $printResults[] = $row; 
} 
echo json_encode($printResults); 
?> 

我有我的文件頭中包含的所有正確的jQuery UI樣式表和文件。當我運行這個時,它不會顯示任何表明啓用了自動完成功能的行爲。我對jQuery相當陌生,所以我可能錯過了一些簡單的事情。任何幫助?

+0

你可以發佈演示,再現你的問題(在[JS小提琴](http://jsfiddle.net/),也許)?另外,'$(this).find('#searchBox').val()'可以用'$('#searchBox').val()'代替,但這不是很大的保存。 –

+0

我不知道我是否可以將它放在JS Fiddle上,因爲我想訪問我的服務器上的數據庫。 – AKor

+0

這是一個公平點,你可以在腳本中使用硬編碼的預填充數組值,而不是動態加載列表。至少這樣,它會顯示動態加載作爲問題,或從潛在問題列表中清除它... –

回答

0

我覺得你對autocompelte語法看起來錯了...

嘗試:

$("#searchBox").autocomplete("php/searchAC.php"); 

http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

不知道你來自哪裏,有你的語法。

這個小提琴(http://jsfiddle.net/2qcUT/)在您輸入框中輸入404錯誤,因爲它正試圖在自動完成中擊中該網址。我的語法沒有得到。

+1

我在這裏進行了假設:http://jqueryui.com/demos/autocomplete/#default而你的是前任插件 –

+0

dang!這隻會教我如何在谷歌的頂級賽事中取勝,而不是爲了更多的升級版本而下注。哦,那麼我會穿上我的外套。 :)至少它回答了語法來自哪裏的問題。 ;-) – Chris

+0

在你的辯護中,他將DID從插件移植到UI代碼庫時改變語法:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/這裏是移植指南需要幫助的人:http://www.learningjquery.com/2010/06/autocomplete-migration-guide –