【发布时间】:2018-04-05 08:23:42
【问题描述】:
我想复制 JQuery UI combobox 并可以即时添加新选择。
用例是从一列中已经存在的内容中进行选择,同时能够键入一个新值并将其添加到我在同一列中编辑的下一个单元格的菜单中(非常类似于Alt + Arrow Down在 Excel 文件中。
我已经有以下代码定义选择单元格编辑器。每列的选项在grid 初始化时存储为"Option1,Option2,Option3"string。它们存储在全局变量中。如果用户手动输入列表中没有的内容,我该如何添加添加到这些选项的可能性?
var SelectCellEditor = function(args) {
var $select;
var defaultValue;
var scope = this;
this.init = function() {
if(args.column.options){
opt_values = args.column.options.split(',');
} else {
opt_values ="".split(',');
}
option_str = "";
for( i in opt_values ){
v = opt_values[i];
option_str += "<OPTION value='"+v+"'>"+v+"</OPTION>";
}
$select = $("<INPUT type='text' list='myoptions' tabIndex='0' class='editor-select' /><datalist id='myoptions'>"+ option_str +"</datalist>");
$select.appendTo(args.container);
$select.focus();
};
this.destroy = function() {
$select.remove();
};
this.focus = function() {
$select.focus();
};
this.loadValue = function(item) {
defaultValue = item[args.column.field];
$select.val(defaultValue);
};
this.serializeValue = function() {
if(args.column.options){
return $select.val();
}else{
return ($select.val() == "");
}
};
this.applyValue = function(item,state) {
item[args.column.field] = state;
};
this.isValueChanged = function() {
return ($select.val() != defaultValue);
};
this.validate = function() {
return {
valid: true,
msg: null
};
};
this.init();
}
【问题讨论】:
标签: javascript slickgrid