Javascript 使用Bootstrap Multiselect作为DataTable Editor的自定义字段类型插件
我试图在datatableeditor()中实现bootstrapmultisect()作为额外的编辑器字段类型。。。下面是加载选项,但我仍然有一些问题。。。就像将值发送到服务器一样。。。字段('account_mm.iso_01')始终为空:Javascript 使用Bootstrap Multiselect作为DataTable Editor的自定义字段类型插件,javascript,ajax,datatables,bootstrap-multiselect,Javascript,Ajax,Datatables,Bootstrap Multiselect,我试图在datatableeditor()中实现bootstrapmultisect()作为额外的编辑器字段类型。。。下面是加载选项,但我仍然有一些问题。。。就像将值发送到服务器一样。。。字段('account_mm.iso_01')始终为空: {"data":[{"DT_RowId":"row_2634", .... ,"account_mm":{"iso_01":""},"country":{"iso_01":null}}]} editor.bootstrapmultipselect.js
{"data":[{"DT_RowId":"row_2634", .... ,"account_mm":{"iso_01":""},"country":{"iso_01":null}}]}
editor.bootstrapmultipselect.js:
$(document).ready(function() {
(function( factory ){
if ( typeof define === 'function' && define.amd ) {
// AMD
define( ['jquery', 'datatables', 'datatables-editor'], factory );
}
else if ( typeof exports === 'object' ) {
// Node / CommonJS
module.exports = function ($, dt) {
if ( ! $ ) { $ = require('jquery'); }
factory( $, dt || $.fn.dataTable || require('datatables') );
};
}
else if ( jQuery ) {
// Browser standard
factory( jQuery, jQuery.fn.dataTable );
}
}(function( $, DataTable ) {
'use strict';
if ( ! DataTable.ext.editorFields ) {
DataTable.ext.editorFields = {};
}
var _fieldTypes = DataTable.Editor ?
DataTable.Editor.fieldTypes :
DataTable.ext.editorFields;
_fieldTypes.bootstrapmultiselect = {
_addOptions: function ( conf, opts ) {
var elOpts = conf._input[0].options;
elOpts.length = 0;
if ( opts ) {
DataTable.Editor.pairs( opts, conf.optionsPair, function ( val, label, i ) {
elOpts[i] = new Option( label, val );
} );
}
},
create: function ( conf ) {
var editor = this;
conf._input = $('<select/>')
.attr( $.extend( {
id: DataTable.Editor.safeId( conf.id ),
multiple: 'multiple'
}, conf.attr || {} ) );
var configurations = $.extend({}, conf.opts, {
buttonWidth: '100%'
});
// On open, need to have the instance update now that it is in the DOM
editor.on( 'open.bootstrapmultiselect' + DataTable.Editor.safeId( conf.id ), function () {
conf._input.multiselect( configurations );
} );
return conf._input[0];
},
update: function (conf, options ) {
var configurations = $.extend({}, conf.opts, {
buttonWidth: '100%'
});
_fieldTypes.bootstrapmultiselect._addOptions(conf, options );
//$(conf._input).multiselect( configurations );
conf._input.multiselect( configurations );
},
get: function ( conf ) {
var val = conf._input.val();
return conf._input.prop('multiple') && val === null ?
[] :
val;
},
set: function ( conf, val ) {
conf._input.val( val ).trigger( 'change', {editor: true} );
}
};
}));
});
$(文档).ready(函数(){
(功能(工厂){
if(typeof define==='function'&&define.amd){
//AMD
定义(['jquery','datatables','datatables editor'],工厂);
}
else if(导出的类型==='object'){
//节点/公共JS
module.exports=函数($,dt){
if(!$){$=require('jquery');}
工厂($,dt | |$.fn.dataTable | | require('datatables'));
};
}
elseif(jQuery){
//浏览器标准
工厂(jQuery,jQuery.fn.dataTable);
}
}(函数($,数据表){
"严格使用",;
如果(!DataTable.ext.editorFields){
DataTable.ext.editorFields={};
}
var\u fieldTypes=DataTable.Editor?
DataTable.Editor.FieldType:
DataTable.ext.editorFields;
_fieldTypes.bootstrapmultiselect={
_addOptions:函数(conf,opts){
var elOpts=conf._输入[0]。选项;
elOpts.length=0;
如果(选择){
DataTable.Editor.pairs(opts,conf.optionsPair,function(val,label,i){
elOpts[i]=新选项(标签,val);
} );
}
},
创建:函数(conf){
var编辑器=这个;
形态输入=$('')
.attr($.extend({
id:DataTable.Editor.safeId(conf.id),
多重:“多重”
},conf.attr |{});
变量配置=$.extend({},conf.opts{
按钮宽度:“100%”
});
//在open上,需要更新实例,因为它位于DOM中
on('open.bootstrapmultipselect'+DataTable.editor.safeId(conf.id),函数(){
conf._input.multiselect(配置);
} );
返回conf.\u输入[0];
},
更新:功能(配置,选项){
变量配置=$.extend({},conf.opts{
按钮宽度:“100%”
});
_fieldTypes.bootstrapmultipselect.\u addOptions(conf,options);
//$(配置输入)。多选(配置);
conf._input.multiselect(配置);
},
获取:函数(conf){
var val=conf._input.val();
返回conf._input.prop('multiple')&&val==null?
[] :
瓦尔;
},
设置:函数(conf,val){
conf._input.val(val).trigger('change',{editor:true});
}
};
}));
});
没人有主意吗?我提供了一个链接到上面的实例。