TimeMinuteField.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. Ext.define('erp.view.core.form.TimeMinuteField', {
  2. extend : 'Ext.form.field.Trigger',
  3. alias : 'widget.timeminutefield',
  4. requiers:['erp.view.core.picker.TimePicker'],
  5. triggerCls : Ext.baseCSSPrefix + "form-minute-trigger",
  6. initComponent : function() {
  7. this.callParent(arguments);
  8. this.addEvents({
  9. afterChangeValue : true
  10. });
  11. },
  12. height:22,
  13. onTriggerClick : function() {
  14. var me = this;
  15. if (this.minutePicker && !this.minutePicker.hidden) {
  16. this.minutePicker.hide();
  17. return;
  18. }
  19. this.createMinutePicker().show();
  20. },
  21. regex : /^(([01]?[0-9])|(2[0-3])):[0-5]?[0-9]$/,
  22. regexText : '格式不正确!',
  23. createMinutePicker : function() {
  24. var b = this, a = b.minutePicker;
  25. if (!a) {
  26. b.minutePicker = a = Ext.create("erp.view.core.picker.TimePicker", {
  27. renderTo : Ext.getBody(),
  28. floating : true,
  29. ownerCt : b,
  30. value:this.value,
  31. listeners : {
  32. scope : b,
  33. okclick : b.onOkClick,
  34. hourdblclick : b.onOkClick,
  35. minutedblclick : b.onOkClick
  36. }
  37. });
  38. a.alignTo(b.inputEl, 'tl-bl?');
  39. }
  40. return a;
  41. },
  42. onOkClick : function() {
  43. var vals = this.minutePicker.getValue();
  44. var a = vals[0], b = vals[1];
  45. if (vals.length == 2) {
  46. a = a == null ? new Date().getHours() : a;
  47. a = a < 10 ? '0' + a : a;
  48. b = b == null ? new Date().getMinutes() : b;
  49. b = b < 10 ? '0' + b : b;
  50. this.setValue(a + ':' + b);
  51. }
  52. this.fireEvent('afterChangeValue', this);
  53. this.minutePicker.hide();
  54. },
  55. setValue : function(value) {
  56. if (!this.regex.test(value)) {
  57. value=null;
  58. }
  59. this.callParent(arguments);
  60. },
  61. hasValid : function() {
  62. return this.regex.test(this.value);
  63. }
  64. });