MultiField.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * 合并字段
  3. */
  4. Ext.define('erp.view.core.form.MultiField', {
  5. extend: 'Ext.form.FieldContainer',
  6. alias: 'widget.multifield',
  7. layout: 'column',
  8. baseCls: 'x-field',//fieldContainer默认为x-component x-container x-container-default
  9. fieldConfig: null,
  10. initComponent : function(){
  11. this.cls = (this.cls || '') + ' x-form-field-multi';
  12. this.callParent(arguments);
  13. var me = this;
  14. var cw = me.columnWidth > 0.3 ? 0.3 : 0.45;
  15. me.insert(0, {
  16. xtype: 'dbfindtrigger',
  17. name: me.name,
  18. columnWidth: cw,
  19. fieldStyle: me.fieldStyle,
  20. allowBlank: me.allowBlank,
  21. value: (!me.secondvalue && me.value && isNaN(me.value))?me.value.split(';')[0]:me.value,
  22. groupName:me.groupName,
  23. fieldConfig: me.fieldConfig,
  24. editable: me.editable,
  25. readOnly:me.readOnly,
  26. listeners: {
  27. change: function(f,newvalue,oldvalue){
  28. me.value = newvalue||f.value;
  29. if(Ext.isEmpty(f.value)) {
  30. me.secondField.setValue('');
  31. }
  32. }
  33. }
  34. });
  35. me.insert(1, {
  36. xtype: 'textfield',
  37. id: me.secondname,
  38. name: me.secondname,
  39. groupName:me.groupName,
  40. columnWidth: 1 - cw,
  41. readOnly: true,
  42. fieldStyle: 'background:#f1f1f1;',
  43. value: (!me.secondvalue && me.value && isNaN(me.value) && me.value.indexOf(';')>0) ?me.value.split(';')[1]:me.secondvalue
  44. });
  45. me.firstField = me.items.items[0];
  46. me.secondField = me.items.items[1];
  47. },
  48. isValid: function(){
  49. return this.firstField.isValid();
  50. },
  51. setValue: function(value){
  52. this.firstField.setValue(value);
  53. },
  54. getValue: function(){
  55. return this.value;
  56. },
  57. setReadOnly: function(bool){
  58. this.firstField.setReadOnly(bool);
  59. },
  60. setFieldStyle: function(style){
  61. this.firstField.setFieldStyle(style);
  62. }
  63. });