Node.js js网格与自动完成

Node.js js网格与自动完成,node.js,jquery-ui-autocomplete,jsgrid,Node.js,Jquery Ui Autocomplete,Jsgrid,我能够使用jsGrid和jquery autocomplete创建自定义字段。所有ajax CRUD调用都适用于所有其他字段。下面的代码激活autocomplete并按预期显示输入字段中的可用选项 var tags = ["tag1", "tag2", "tag3"]; MyDescriptionField.prototype = new jsGrid.Field({ insertTemplate: function(value) { return this._editPicker = $

我能够使用jsGrid和jquery autocomplete创建自定义字段。所有ajax CRUD调用都适用于所有其他字段。下面的代码激活autocomplete并按预期显示输入字段中的可用选项

var tags = ["tag1", "tag2", "tag3"];

MyDescriptionField.prototype = new jsGrid.Field({

insertTemplate: function(value) {
 return this._editPicker = $("<input>").autocomplete({source : tags});
 },
editTemplate: function(value) {
 return this._editPicker = $("<input>").autocomplete({source : tags});
},
 ........... (more code)
var tags=[“tag1”、“tag2”、“tag3”];
MyDescriptionField.prototype=新建jsGrid.Field({
insertTemplate:函数(值){
返回此值。_editPicker=$(“”)。自动完成({source:tags});
},
editTemplate:函数(值){
返回此值。_editPicker=$(“”)。自动完成({source:tags});
},
(更多代码)
到目前为止还不错。不过,为了实际捕获该值以便将其插入数据库,我还需要定义insertValue和editValue。 下面的代码不起作用

insertValue: function(){
        return this._insertPicker = $("<input>").val();
},
...........(more code)
insertValue:function(){
返回此值。_insertPicker=$(“”).val();
},
(更多代码)
这一个不起作用:

insertValue: function(){
        return this._insertPicker.autocomplete({
            select: function(event, ui) {
                $("<input>").val(ui.item.value);
            }
        });
    },
insertValue:function(){
返回此。\u insertPicker.autocomplete({
选择:功能(事件、用户界面){
$(“”).val(ui.item.value);
}
});
},
参考:jsGrid

自动完成:

尝试以下代码片段:

$(函数(){
var myTagField=函数(配置){
jsGrid.Field.call(this,config);
};
myTagField.prototype=新建jsGrid.Field({
分拣机:功能(tag1、tag2){
返回tag1.localeCompare(tag2);
},
itemTemplate:函数(值){
返回值;
},
insertTemplate:函数(值){
返回此值。_insertAuto=$(“”)。自动完成({source:tags});
},
editTemplate:函数(值){
返回此值。_editAuto=$(“”)。自动完成({source:tags}).val(值);
},
insertValue:function(){
将此返回。_insertAuto.val();
},
editValue:function(){
返回此项。_editAuto.val();
}
});
jsGrid.fields.myTagField=myTagField;
$(“#jsGrid”).jsGrid({
宽度:“100%”,
插入:对,
编辑:对,,
排序:对,
是的,
字段:[
{name:“name”,键入:“text”},
{名称:“标记”,类型:“myTagField”,宽度:100,对齐:“中心”},
{type:“control”,editButton:false,modeSwitchButton:false}
],
数据:db.users
});
});
变量标签=[“tag1”、“tag2”、“tag3”];
var db={};
db.users=[
{
“姓名”:“卡森·凯利”,
“标记”:”
},
{
“姓名”:“普雷斯科特·格里芬”,
“标记”:“标记1”
},
{
“姓名”:“阿米尔·桑德斯”,
“标记”:“标记3”
},
{
“姓名”:“德里克·桑顿”,
“标记”:“标记2”
},
{
“姓名”:“弗莱彻·罗梅罗”,
“标记”:”
}];

谢谢@beaver。你的笔帮助我更好地理解自定义字段。我对它进行了一些扩展,添加了自动完成过滤功能

$(函数(){
var myTagField=函数(配置){
jsGrid.Field.call(this,config);
};
myTagField.prototype=新建jsGrid.Field({
自动搜索:对,
分拣机:功能(tag1、tag2){
返回tag1.localeCompare(tag2);
},
itemTemplate:函数(值){
返回“”+值+“”;
},
insertTemplate:函数(值){
返回此。\u insertAuto=$(“”)。自动完成({
资料来源:标签
});
},
filterTemplate:函数(值){
如果(!this.filtering)
返回“”;
var grid=此。_grid,
$result=this.\u filterAuto=$(“”)。自动完成({
资料来源:标签
});
如果(本自动搜索){
$result.on(“更改”,函数(e){
grid.search();
});
}
返回$result;
},
editTemplate:函数(值){
返回此。\u editAuto=$(“”)。自动完成({
资料来源:标签
}).val(价值);
},
insertValue:function(){
将此返回。_insertAuto.val();
},
filterValue:function(){
将此返回。_filterato.val();
},
editValue:function(){
返回此项。_editAuto.val();
}
});
jsGrid.fields.myTagField=myTagField;
$(“#jsGrid”).jsGrid({
宽度:“100%”,
过滤:对,
插入:对,
编辑:对,,
排序:对,
是的,
字段:[{
姓名:“姓名”,
键入:“文本”
},
{
名称:“标签”,
键入:“myTagField”,
宽度:100,
对齐:“居中”
},
{
类型:“控制”,
编辑按钮:错误,
modeSwitchButton:错误
}
],
数据:db.users,
控制器:{
loadData:函数(过滤器){
返回$.grep(db.users,函数(项){
返回(!filter.Tag | | item.Tag.toLowerCase().indexOf(filter.Tag.toLowerCase())>-1);
});
}
}
});
});
变量标签=[“tag1”、“tag2”、“tag3”];
var db={};
db.users=[{
“姓名”:“卡森·凯利”,
“标记”:”
},
{
“姓名”:“普雷斯科特·格里芬”,
“标记”:“标记1”
},
{
“姓名”:“阿米尔·桑德斯”,
“标记”:“标记3”
},
{
“姓名”:“德里克·桑顿”,
“标记”:“标记2”
},
{
“姓名”:“弗莱彻·罗梅罗”,
“标记”:”
}
];

使用autocomplete进行自定义网格日期字段筛选

Hi@beaver Fantastic!非常感谢。关键是要使用“\u insertAuto”和“editAuto”。我希望有更多关于这方面的文档。我还注意到自定义字段没有显示在搜索栏中。但这可能是另一个问题。