Javascript 使用Bootstrap Multiselect作为DataTable Editor的自定义字段类型插件

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

我试图在datatableeditor()中实现bootstrapmultisect()作为额外的编辑器字段类型。。。下面是加载选项,但我仍然有一些问题。。。就像将值发送到服务器一样。。。字段('account_mm.iso_01')始终为空:

{"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});
}
};
}));
});

没人有主意吗?我提供了一个链接到上面的实例。