【问题标题】:Autocomplete dataInit自动完成数据初始化
【发布时间】:2013-03-15 13:36:55
【问题描述】:

我正在尝试在dataInit 的 jqGrid 中使用 jQuery UI 自动完成功能。我是这样做的:

{ name:'ac_fin_g', index:'ac_fin_g', width:75, editable: true, edittype: 'text',
    editoptions: {
        dataInit: function (elem) {
            $(elem).autocomplete({
                source: 'autocomplete.php',
                select: function (event, ui) {
                    #('ac_fin_g').val(ui.item.value);
                }
            });
        }
   }}

在函数ondblClickRow 中,我将select 作为参数传递:

ondblClickRow: function (id, select) {
    if (id) {
        if (id !== lastSel) {
            $('#list').restoreRow (lastSel);
            $('#list').editRow (id, true, select);
            lastSel = id;
        } else {
            $('#list').restoreRow (lastSel);
            lastSel = "";
        }
    }
}

这是有效的,但仅适用于第一行。

【问题讨论】:

    标签: jqgrid jquery-autocomplete double-click inline-editing


    【解决方案1】:

    我认为您的问题的主要原因是错误使用 ondblClickRow 回调。 ondblClickRow回调的第二个参数是网格中行的索引。您可以使用其他选项。 ondblClickRow回调的最全原型包含4个参数:

    // one can use ondblClickRow: function (id) { below because iRow, iCol, e are not used
    ondblClickRow: function (id, iRow, iCol, e) {
        var $self = $(this);
        if (id !== lastSel) {
            $self.jqGrid("restoreRow", lastSel);
            lastSel = id;
        }
        $self.jqGrid("editRow", id, true);
    }
    

    editRow的第三个参数是oneditfunc回调。 iRow 号码作为oneditfunc 回调的用法是错误的。

    【讨论】:

    • 感谢@Oleg 的回复!对不起,我没明白你的意思:(
    • @mzs_newbie: ondblClickRow 是回调函数。函数的所有参数都是由jqGrid定义的,你不能改变它。您在代码中使用了ondblClickRow: function (id, select) { ... $('#list').editRow (id, true, select); ...}。因此,在调用editRow 期间,您将ondblClickRow(您将其命名为select,我将其命名为iRow)的第二个参数作为3-d 参数转发。错了。
    • 哦,好的。我现在明白了。谢谢。我改变了一切,但仍然无法正常工作。
    • @mzs_newbie:试试the demo。差不多就是你发的。我没有看到任何问题。顺便说一句,您发布的代码#('ac_fin_g').val(ui.item.value); 表示确定$('#ac_fin_g').val(ui.item.value);。看demo的代码。我用dataInit: function (elem) {var $elem = $(elem);$elem.autocomplete({source: 'autocomplete.php', select: function (event, ui) { $elem.val(ui.item.value); }});}
    • @mzs_newbie:您确认您在演示中正确填写了id 行,但不起作用?可能你在演示中有一些 id 重复?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多