0

我正在尝试使用自动完成功能进行表单编辑.. 每次用户打开编辑表单时,它的来源都不同

打开编辑表单时:

beforeShowForm: function(frm) { 
    var id = grid.jqGrid('getGridParam','selrow');
    if (id) {
        var ret = grid.jqGrid('getRowData',id);
        AccCode = ret.szAccCode;
    };
    $.post("url_getchildren", { szAccCode: AccCode}).
        done(function(data) {
                lschildcode=data;
        });
},

我已经管理了来自服务器的结果,但我无法将其发送到网格。

colModel

{name:'szAccParentCode',index:'szAccParentCode', editable:true, edittype:'text',
    editoptions : {
        dataInit: function(elem){
            $(elem).focus(function(){
                this.select();
            }),
            $(elem).autocomplete({
                source:lschildcode
            })
        }
    }
},

为什么我不能传递lschildcode给自动完成的源?每次我在框中输入时,自动完成都会向服务器发送术语。

TIA

4

1 回答 1

0

我认为dataInit(等等)将在执行之前autocomplete被调用。 done$.post

要解决此问题,您可以例如$("#szAccParentCode").autocomplete({source:lschildcode})done.

另一种方式:可以使用 URL 作为source. URL 可以包含一些附加参数。如果您需要使用 HTTP POST,您可以在实现内部或实现中声明为函数source和调用response参数(回调函数)。只需查看在远程缓存示例中的实现并检查代码(单击“查看源代码”)或检查 jQuery UI Autocomplete 附近使用的源代码(参见此处)。successdonesourcesource$.ajax

于 2013-05-21T20:47:29.717 回答