出于某种原因,我无法通过首字母过滤文本框,而不是向我提供包含特定字母的所有字词。
以下是我希望如何使用它的示例:http://jsfiddle.net/miroslav/yLdn3/
这里是我的代码(一切正常,它从数据库表中获取地址,但如果我插入" a"它会给我所有包含&#34的地址; a& #34;,但我想要那些以" a")开头的那些。
getautocomplete.php
<?php
mysql_connect("localhost","username","password");
mysql_select_db("databasename");
$term=$_GET["term"];
$query=mysql_query("SELECT * FROM table where address like '%".$term."%'");
$json=array();
while($table=mysql_fetch_array($query)){
$json[]=array(
'value'=> $table["address"],
'label'=>$table["address"]
);
}
echo json_encode($json);
?>
autocomplete.php
<html>
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css"
href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" />
<script type="text/javascript">
$(document).ready(function(){
$("#address").autocomplete({
source:'getautocomplete.php',
});
// Overrides the default autocomplete filter function to search only from the beginning of the string
$.ui.autocomplete.filter = function (array, term) {
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");
return $.grep(array, function (value) {
return matcher.test(value.label || value.value || value);
});
};
})();
</script>
</head>
<body>
<form method="post" action="">
Name : <input type="text" id="address" name="address" />
</form>
</body>
<html>
答案 0 :(得分:1)
在数据库查询中的术语之前删除%
。它在regexp中的作用类似于.*
,因此您可以使用.*term.*
。
答案 1 :(得分:0)
尝试使用此查询:
SELECT * FROM table where substr(address,1,1) like '%".$term."%'"