X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..6a7e4474cba9d8be4b2ec445e10f1691f7277c50:/src/widgets/form/NumberField.js diff --git a/src/widgets/form/NumberField.js b/src/widgets/form/NumberField.js index c6cd3482..01c180a1 100644 --- a/src/widgets/form/NumberField.js +++ b/src/widgets/form/NumberField.js @@ -1,6 +1,6 @@ /*! - * Ext JS Library 3.1.1 - * Copyright(c) 2006-2010 Ext JS, LLC + * Ext JS Library 3.2.0 + * Copyright(c) 2006-2010 Ext JS, Inc. * licensing@extjs.com * http://www.extjs.com/license */ @@ -78,30 +78,41 @@ Ext.form.NumberField = Ext.extend(Ext.form.TextField, { this.maskRe = new RegExp('[' + Ext.escapeRe(allowed) + ']'); Ext.form.NumberField.superclass.initEvents.call(this); }, - - // private - validateValue : function(value){ - if(!Ext.form.NumberField.superclass.validateValue.call(this, value)){ - return false; - } - if(value.length < 1){ // if it's blank and textfield didn't flag it then it's valid - return true; + + /** + * Runs all of NumberFields validations and returns an array of any errors. Note that this first + * runs TextField's validations, so the returned array is an amalgamation of all field errors. + * The additional validations run test that the value is a number, and that it is within the + * configured min and max values. + * @param {Mixed} value The value to get errors for (defaults to the current field value) + * @return {Array} All validation errors for this field + */ + getErrors: function(value) { + var errors = Ext.form.NumberField.superclass.getErrors.apply(this, arguments); + + value = value || this.processValue(this.getRawValue()); + + if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid + return errors; } + value = String(value).replace(this.decimalSeparator, "."); + if(isNaN(value)){ - this.markInvalid(String.format(this.nanText, value)); - return false; + errors.push(String.format(this.nanText, value)); } + var num = this.parseValue(value); + if(num < this.minValue){ - this.markInvalid(String.format(this.minText, this.minValue)); - return false; + errors.push(String.format(this.minText, this.minValue)); } + if(num > this.maxValue){ - this.markInvalid(String.format(this.maxText, this.maxValue)); - return false; + errors.push(String.format(this.maxText, this.maxValue)); } - return true; + + return errors; }, getValue : function(){