2011-03-07 162 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 –