Я пытался реализовать автозаполнение для текстового поля, которое генерируется jQgrid.Страница Php будет возвращать данные JSON.Вот что я смог сделать на данный момент: (Пожалуйста, помогите)
function autocomplete_element(value, options) {
var $ac = $('<input type="text"/>');
$ac.val(value);
$ac.autocomplete({
source: function(request, response) {
$.getJSON("autocomplete.php", { q: request.term }, response);
}
});
return $ac;
}
function autocomplete_value(elem, op, value) {
if (op == "set") {
$(elem).val(value);
}
return $(elem).val();
}
$(function(){
$("#list").jqGrid({
url:'process1.php',
datatype: 'xml',
mtype: 'GET',
colNames:['Column Name'],
colModel :[
{name:'columnid', index:'columnid', width:50, edittype:'custom',
editoptions: {
custom_element : autocomplete_element,
custom_value : autocomplete_value
}
}
]
........
........
////////////////////////////////////////////////
/// THE PHP PAGE ////
////////////////////////////////////////////////
/*
autocomplete.php
*/
<?php
require_once("../dbconfig.php");
$term = trim(strip_tags($_REQUEST['q']));//retrieve the search term that autocomplete sends
$qstring = "SELECT description as value, id FROM test WHERE name LIKE '%".$term."%'";
$result = mysql_query($qstring);//query the database for entries containing the term
while ($row = mysql_fetch_array($result,MYSQL_ASSOC))//loop through the retrieved values
{
$row['id']=(int)$row['id'];
$row['value']=htmlentities(stripslashes($row['value']));
$row_set[] = $row;//build an array
}
echo json_encode($row_set);//format the array into json data
?>
Когда я использую такие данные, как ["blah", "hello", "howdy"] в источнике $ ac.autocomplete,вещь, кажется, работает хорошо.Но у меня есть около 2000 строк данных для поиска.Форма jQgrid работает правильно, и я могу добавлять и редактировать данные.Кроме того, я протестировал страницу php, которая отображает правильные данные JSON, когда я указываю на нее браузером.Я поражен только автозаполнением с данными, возвращаемыми со страницы php, так как я не очень доволен jQuery.Пожалуйста, помогите.