php - JqG​​rid + 自动完成

标签 php javascript jqgrid

我在 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 - JqG​​rid + 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932264/

相关文章:

javascript - 与 AngularJs JavaScript 的异步特性作斗争

javascript - 如何在外部单击时关闭模态

ruby-on-rails - Rails jqgrid 列背景色动态

jquery - 在jqgrid中使用grid.history来跟踪搜索

php - 如何使用自定义频率音/波创建 .wav 文件?

php - 无法查看从使用 PHP 转换为 JSON 的 MYSQL 检索的数据

php - CodeIgniter 大批量插入

javascript - 如何在 Haraka 上解析电子邮件?

javascript - jqGrid - 绑定(bind)键更改箭头和 Tab 键行为

javascript - 获取数据时将变量发送到 PHP 脚本