X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2Fform%2FTextField.js;h=20a8c7dd0f13cc57b3a1c0d6bb5aba87b7fa3c05;hb=16d585588738895fd73db1cc2cf3754144012aab;hp=cff32ec571099a2c3a3be655c028d15e5c85d084;hpb=8a7b32042c92ead9c92a39d4bffd78884f6ccae7;p=roojs1 diff --git a/Roo/form/TextField.js b/Roo/form/TextField.js index cff32ec571..20a8c7dd0f 100644 --- a/Roo/form/TextField.js +++ b/Roo/form/TextField.js @@ -83,6 +83,10 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { * @cfg {Boolean} selectOnFocus True to automatically select any existing field text when the field receives input focus (defaults to false) */ selectOnFocus : false, + /** + * @cfg {Boolean} allowLeadingSpace True to prevent the stripping of leading white space + */ + allowLeadingSpace : false, /** * @cfg {String} blankText Error text to display if the allow blank validation fails (defaults to "This field is required") */ @@ -104,17 +108,18 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { */ regexText : "", /** - * @cfg {String} emptyText The default text to display in an empty field (defaults to null). + * @cfg {String} emptyText The default text to display in an empty field - placeholder... (defaults to null). */ emptyText : null, - /** - * @cfg {String} emptyClass The CSS class to apply to an empty field to style the {@link #emptyText} (defaults to - * 'x-form-empty-field'). This class is automatically added and removed as needed depending on the current field value. - */ - emptyClass : 'x-form-empty-field', + // private - initEvents : function(){ + initEvents : function() + { + if (this.emptyText) { + this.el.attr('placeholder', this.emptyText); + } + Roo.form.TextField.superclass.initEvents.call(this); if(this.validationEvent == 'keyup'){ this.validationTask = new Roo.util.DelayedTask(this.validate, this); @@ -123,13 +128,14 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { else if(this.validationEvent !== false){ this.el.on(this.validationEvent, this.validate, this, {buffer: this.validationDelay}); } - if(this.selectOnFocus || this.emptyText){ + + if(this.selectOnFocus){ this.on("focus", this.preFocus, this); - if(this.emptyText){ - this.on('blur', this.postBlur, this); - this.applyEmptyText(); - } } + if (!this.allowLeadingSpace) { + this.on('blur', this.cleanLeadingSpace, this); + } + if(this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Roo.form.VTypes[this.vtype+'Mask']))){ this.el.on("keypress", this.filterKeys, this); } @@ -165,41 +171,28 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { this.autoSize(); } }, - + // private - clean the leading white space + cleanLeadingSpace : function(e) + { + this.setValue(this.getValue().replace(/^\s+/,'')); + }, /** * Resets the current field value to the originally-loaded value and clears any validation messages. - * Also adds emptyText and emptyClass if the original value was blank. + * */ reset : function(){ Roo.form.TextField.superclass.reset.call(this); - this.applyEmptyText(); - }, - - applyEmptyText : function(){ - if(this.rendered && this.emptyText && this.getRawValue().length < 1){ - this.setRawValue(this.emptyText); - this.el.addClass(this.emptyClass); - } - }, - + + }, // private preFocus : function(){ - if(this.emptyText){ - if(this.el.dom.value == this.emptyText){ - this.setRawValue(''); - } - this.el.removeClass(this.emptyClass); - } + if(this.selectOnFocus){ this.el.dom.select(); } }, - // private - postBlur : function(){ - this.applyEmptyText(); - }, - + // private filterKeys : function(e){ var k = e.getKey(); @@ -216,11 +209,9 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { }, setValue : function(v){ - if(this.emptyText && this.el && v !== undefined && v !== null && v !== ''){ - this.el.removeClass(this.emptyClass); - } + Roo.form.TextField.superclass.setValue.apply(this, arguments); - this.applyEmptyText(); + this.autoSize(); }, @@ -231,7 +222,7 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { * @return {Boolean} True if the value is valid, else false */ validateValue : function(value){ - if(value.length < 1 || value === this.emptyText){ // if it's blank + if(value.length < 1) { // if it's blank if(this.allowBlank){ this.clearInvalid(); return true; @@ -330,13 +321,15 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { return; } - if(isSelectAll){ // backspace and delete key + if(isSelectAll && event.getCharCode() > 31){ // backspace and delete key event.preventDefault(); // this is very hacky as keydown always get's upper case. - // + var cc = String.fromCharCode(event.getCharCode()); - this.setValue( this.shiftKey ? cc : cc.toLowerCase()); + + + this.setValue( event.shiftKey ? cc : cc.toLowerCase()); }