Javascript Slickgrid自定义多选编辑器仅适用于FireFox 17.0.1
我扩展了SlickGrid的编辑器,支持html选择和MultiSelect。以下是MultiSelectEditor源代码:Javascript Slickgrid自定义多选编辑器仅适用于FireFox 17.0.1,javascript,slickgrid,Javascript,Slickgrid,我扩展了SlickGrid的编辑器,支持html选择和MultiSelect。以下是MultiSelectEditor源代码: function PickListEditor(args) { var $select; var defaultValue ; var scope = this; this.init = function() { console.log("PickListEditor... SelectValue
function PickListEditor(args) {
var $select;
var defaultValue ;
var scope = this;
this.init = function() {
console.log("PickListEditor... SelectValues");
console.log(args.column.columnSelectItems);
option_str = ""
var length = args.column.columnSelectItems.length;
for(var i = 0; i< length ; i++){
var selectOption = args.column.columnSelectItems[i];
if(selectOption["disable"]==true) disable = "disable";
option_str += "<OPTION value='"+selectOption["stringValue"]+"'>"+selectOption["label"]+"</OPTION>";
}
$select = $("<select tabIndex='0' multiple='multiple'>"+ option_str +"</select>");
console.log(args.container);
$select.appendTo(args.container);
$(args.container).append($select[0]);
console.log($select);
console.log($select[0]);
$select.focus();
};
this.destroy = function() {
$select.remove();
};
this.focus = function() {
$select.focus();
};
this.loadValue = function(item) {
console.log("loaded Item : ");
console.log(item);
defaultValue = item[args.column.field];
$select.val(defaultValue);
};
this.serializeValue = function() {
if(args.column.columnSelectItems){
return $select.val();
}else{
return "";
}
};
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();
}
函数PickListEditor(args){
var$select;
风险价值;
var范围=此;
this.init=函数(){
log(“PickListEditor…SelectValues”);
console.log(args.column.columnSelectItems);
选项_str=“”
var length=args.column.columnSelectItems.length;
对于(变量i=0;i
多选功能在Firefox17.0上运行良好。但在chrome 23.0.1271.95或safari 6.0.2上,会显示multiselect,但无法选择项目
有人知道吗
干杯,
鲍里斯。试试这个:
函数选择编辑器(args){
var$select;
风险价值;
var范围=此;
this.init=函数(){
var选项_str=“”;
for(输入args.column.options){
option_str+=“”+args.column.options[key]+“”;
}
$select=$(“+选项”\u str+”);
$select.appendTo(args.container);
$select.focus();
};
this.destroy=函数(){
$select.remove();
};
this.focus=函数(){
$select.focus();
};
this.loadValue=函数(项){
defaultValue=项[args.column.field];
$select.val(默认值);
};
this.serializeValue=函数(){
返回$select.val();
};
this.applyValue=函数(项、状态){
项[args.column.field]=状态;
};
this.isValueChanged=函数(){
返回($select.val()!=defaultValue);
};
this.validate=函数(){
返回{
有效:对,
msg:null
};
};
this.init();
}
function SelectsEditor(args) {
var $select;
var defaultValue;
var scope = this;
this.init = function () {
var option_str = "";
for (key in args.column.options) {
option_str += "<OPTION value='" + key + "'>" + args.column.options[key] + "</OPTION>";
}
$select = $("<SELECT tabIndex='0' class='editor-select' multiple='multiple'>" + option_str + "</SELECT>");
$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 () {
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();
}