X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/7a654f8d43fdb43d78b63d90528bed6e86b608cc..3789b528d8dd8aad4558e38e22d775bcab1cbd36:/src/form/Basic.js diff --git a/src/form/Basic.js b/src/form/Basic.js index f221e64d..430f9eea 100644 --- a/src/form/Basic.js +++ b/src/form/Basic.js @@ -75,7 +75,7 @@ Ext.define('Ext.form.Basic', { extend: 'Ext.util.Observable', alternateClassName: 'Ext.form.BasicForm', requires: ['Ext.util.MixedCollection', 'Ext.form.action.Load', 'Ext.form.action.Submit', - 'Ext.window.MessageBox', 'Ext.data.Errors'], + 'Ext.window.MessageBox', 'Ext.data.Errors', 'Ext.util.DelayedTask'], constructor: function(owner, config) { var me = this, @@ -102,6 +102,8 @@ Ext.define('Ext.form.Basic', { me.paramOrder = me.paramOrder.split(/[\s,|]/); } + me.checkValidityTask = Ext.create('Ext.util.DelayedTask', me.checkValidity, me); + me.addEvents( /** * @event beforeaction @@ -273,6 +275,7 @@ paramOrder: 'param1|param2|param' */ destroy: function() { this.clearListeners(); + this.checkValidityTask.cancel(); }, /** @@ -309,9 +312,10 @@ paramOrder: 'param1|param2|param' // Flush the cached list of formBind components delete this._boundItems; - // Check form bind, but only after initial add + // Check form bind, but only after initial add. Batch it to prevent excessive validation + // calls when many fields are being added at once. if (me.initialized) { - me.onValidityChange(!me.hasInvalidField()); + me.checkValidityTask.delay(10); } },