X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..6a7e4474cba9d8be4b2ec445e10f1691f7277c50:/src/widgets/form/TextField.js diff --git a/src/widgets/form/TextField.js b/src/widgets/form/TextField.js index bf7fdafd..27627b36 100644 --- a/src/widgets/form/TextField.js +++ b/src/widgets/form/TextField.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 */ @@ -368,8 +368,8 @@ var myField = new Ext.form.NumberField({ }, /** - *

Validates a value according to the field's validation rules and marks the field as invalid - * if the validation fails. Validation rules are processed in the following order:

+ *

Validates a value according to the field's validation rules and returns an array of errors + * for any failing validations. Validation rules are processed in the following order:

*
* - * @param {Mixed} value The value to validate - * @return {Boolean} True if the value is valid, else false + * @param {Mixed} value The value to validate. The processed raw value will be used if nothing is passed + * @return {Array} Array of any validation errors */ - validateValue : function(value){ + getErrors: function(value) { + var errors = Ext.form.TextField.superclass.getErrors.apply(this, arguments); + + value = value || this.processValue(this.getRawValue()); + if(Ext.isFunction(this.validator)){ var msg = this.validator(value); - if(msg !== true){ - this.markInvalid(msg); - return false; + if (msg !== true) { + errors.push(msg); } } - if(value.length < 1 || value === this.emptyText){ // if it's blank - if(this.allowBlank){ - this.clearInvalid(); - return true; - }else{ - this.markInvalid(this.blankText); - return false; - } + + if (!this.allowBlank && (value.length < 1 || value === this.emptyText)) { // if it's blank + errors.push(this.blankText); } - if(value.length < this.minLength){ - this.markInvalid(String.format(this.minLengthText, this.minLength)); - return false; + + if (value.length < this.minLength) { + errors.push(String.format(this.minLengthText, this.minLength)); } - if(value.length > this.maxLength){ - this.markInvalid(String.format(this.maxLengthText, this.maxLength)); - return false; - } - if(this.vtype){ + + if (value.length > this.maxLength) { + errors.push(String.format(this.maxLengthText, this.maxLength)); + } + + if (this.vtype) { var vt = Ext.form.VTypes; if(!vt[this.vtype](value, this)){ - this.markInvalid(this.vtypeText || vt[this.vtype +'Text']); - return false; + errors.push(this.vtypeText || vt[this.vtype +'Text']); } } - if(this.regex && !this.regex.test(value)){ - this.markInvalid(this.regexText); - return false; + + if (this.regex && !this.regex.test(value)) { + errors.push(this.regexText); } - return true; + + return errors; }, /**