Я нашел этот фрагмент кода в сети и адаптировал его к моим потребностям.Ошибка отображения автозаполнения JQuery MSG, если нет результата
привет, может быть остальная часть моего кода поможет прояснить это:
index.php>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="searchdb.js"></script>
<div>DBLookUp <input id="autocomplete" type="text" />
<div id="showresults"></div>
</div>
searchdb.js>
//autocomplete function
$(document).ready(function(){
$("#autocomplete").keyup(function()
{
$("#showresults").show();
var dbsearch;
dbsearch = $("#autocomplete").val();
if (dbsearch.length > 0)
{
$.ajax(
{
type: "POST",
url: "autocomplete.php",
data: "dbsearch=" + dbsearch,
success: function(message)
{
$("#showresults").empty();
if (message.length > 0) {
$("#showresults").append(message);
} else {
$("#showresults").append("No Results found!");
}
}
});
}
else
{
// if empty
$("#showresults").empty();
}
});
});
// конец функции автозаполнения
function selectItem(id,value)
{
document.getElementById("autocomplete").value=value;
autocomplete(id,value);
}
autocomplete.php>
<?php
require_once("searchdb.php");
$dbsearch = strtolower(mysql_real_escape_string(strip_tags($_POST['dbsearch'])));
$autocompl=new DBQUERY();
$autocompl->autocomplete($dbsearch);
?>
searchdb.php>
<?php
class DBQUERY {
private $dbh;
public function __construct() {
$this->dbh = new PDO("mysql:host=localhost;dbname=mydb", "root", "");
}
public function autocomplete($dbsearch)
{
$cons = $this->dbh->prepare("select * from clients where cl_name like :dbsearch");
$cons->execute(array(':dbsearch' => '%'.$dbsearch.'%'));
while($dbrow = $cons->fetch())
{
$data=$dbrow["cl_name"];$id=$dbrow["cli_id"];
echo "<a class='resultsdb' href=\"javascript:selectItem
(".$id.",'".$data."')\">".$data."</a><br>";
}
?>
<script type="text/javascript">
$(document).ready(function(){
$(".resultsdb").click(function(){
$("#showresults").hide();
});
});
</script>
<?php
}
//end autocomplete
}
?>
он прекрасно работает, но я не могу сделать это не показывать "результаты не найдены!" сообщение. Я думаю, что else-предложение перезаписывается оператором if, который начинает работать, как только он обнаруживает ввод. (... if (dbsearch.length> 0) ...)
но так как im new для jquery i can not, похоже, выясняет, где изменить скрипт так, чтобы он работал правильно.
Параметр 'message' объект, возвращаемый из' autocomplete.php' файла не должен иметь длину <= 0. Попробуйте проверить значение 'message', когда вы ожидаете, чтобы быть пустым, чтобы увидеть его истинное значение. – Nunners
как бы я это сделал? – user3292312