*/
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);
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.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Roo.form.VTypes[this.vtype+'Mask']))){
this.el.on("keypress", this.filterKeys, this);
/**
* 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();
},
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();
},
* @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;
},
// private
- SafariOnKeyDown : function(event){
+ SafariOnKeyDown : function(event)
+ {
+ // this is a workaround for a password hang bug on chrome/ webkit.
+
var isSelectAll = false;
+
if(this.el.dom.selectionEnd > 0){
isSelectAll = (this.el.dom.selectionEnd - this.el.dom.selectionStart - this.getValue().length == 0) ? true : false;
}
event.preventDefault();
this.setValue('');
return;
- };
+ }
+
if(isSelectAll){ // backspace and delete key
event.preventDefault();
- this.setValue(String.fromCharCode(event.getKey()));
- };
+ // this is very hacky as keydown always get's upper case.
+ //
+ var cc = String.fromCharCode(event.getCharCode());
+ this.setValue( event.shiftKey ? cc : cc.toLowerCase());
+
+ }
}