我在 jqgrid 中实现自动完成时遇到问题。我一直在研究别名,直到我在一个目前不满足的网站上提出这个问题。问题是这样的,我必须在我正在开发的应用程序中多次使用自动完成功能。现在我有这个功能:
Javascript:
function autocomplete_element(value, options) {
var $ac = $('<input type="text"/>');
$ac.val(value);
$ac.autocomplete({
source: function(request, response)
{
$.getJSON("autocomplete.php?id=estrategico",
{ q: request.term }, response);
}
});
return $ac;
}
Jqgrid:
jQuery("#obj_oper_org").jqGrid({
(...)
{name:'COD_OBJ_EST',index:'COD_OBJ_EST', hidden: true, editable:true, editrules:{required:true, edithidden:true}, edittype : 'custom', editoptions : {'custom_element' : autocomplete_element}},
更多的目的是将参数传递给 javascript 函数,以免每个字段永远重复相同的函数,因为我需要不断更改 url。是否有可能制作出类似类型的作品?抱歉问这个问题,但我在 javascript 方面没有太多经验,所以我遇到了一些困难
最佳答案
首先,您不需要使用 edittype : 'custom'
就能够使用 jQuery UI 自动完成。相反,您可以仅使用 dataInit
。
您可以定义myAutocomplete
函数,例如
function myAutocomplete(elem, url) {
setTimeout(function () {
$(elem).autocomplete({
source: url,
minLength: 2,
select: function (event, ui) {
$(elem).val(ui.item.value);
$(elem).trigger('change');
}
});
}, 50);
}
然后使用
{ name:'COD_OBJ_EST', hidden: true, editable: true,
editoptions: {
dataInit: function (elem) {
myAutocomplete(elem, "autocomplete.php?id=estrategico");
}
}}
请注意,将发送到服务器的参数名称是标准名称term
,而不是您当前使用的名称q
。我个人认为没有必要更改参数的默认名称。
关于php - JqGrid + 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932264/