2016-12-14 85 views
1

我有一個複選框基團成分和形式時每個複選框值提交作爲像這樣的單獨參數傳遞:ExtJS的 - 提交選定複選框值作爲字符串

mycheckboxgroup: val1 
mycheckboxgroup:val2 
mycheckboxgroup:val3 

如何可以代替提交所有複選框組值在逗號分隔的字符串?

mycheckboxgroup: val1, val2, val3 

我試過使用getSubmitData方法,但沒有奏效。這些值仍然以單獨的參數提交。

這裏是我CheckBoxGroup類的一個片段:

Ext.define("MyApp.view.form.field.CheckboxGroup",{ 
    extend:"Ext.form.CheckboxGroup", 

    vertical:true, 
    columns:2, 
    getSubmitData:function(){ 
     var fldNm = this.name; 
     return this.getValue()[fldNm].toString(); 
    }, 

    initComponent:function(){ 
    ..... 
    ..... 

    this.callParent(arguments); 
    } 

}); 

我使用分機6.0.2

感謝

回答

3

的問題是,你的表單,提交後,將查詢複選框,而不是整個集團。

但是,您可以使用非持久性複選框和隱藏字段來創建自定義組件,該隱藏字段會聚合該值。這可能需要一些微調,但這樣的事情:

Ext.define("MyApp.ux.CheckboxGroup",{ 
    extend:"Ext.form.CheckboxGroup", 
    xtype:'mycheckboxgroup', 
    initComponent:function() { 
     var me = this, 
      hf = Ext.widget({xtype:'hiddenfield',name:me.name}); 
     me.callParent(arguments); 
     var checkboxes = me.query('checkbox'), 
      onChange = function(cb, nv) { 
       var arr = []; 
       Ext.each(checkboxes,function(item) { 
        if(item.checked) arr.push(item.inputValue); 
       }); 
       hf.setValue(arr.join(', ')); 
      }; 
     Ext.each(checkboxes, function(item) { 
      console.log(item); 
      item.on('change',onChange); 
      item.submitValue = false; // do not submit the checkbox value 
     }) 
     me.add(hf); 
    } 
}); 

相關小提琴:https://fiddle.sencha.com/#view/editor&fiddle/1mim