widgets/SecurePass.js
[Pman.Core] / widgets / SecurePass.js
index c64f878..feb9b54 100644 (file)
@@ -72,6 +72,11 @@ Ext.extend(Ext.form.SecurePass, Ext.form.TextField, {
     // private
     initEvents : function(){
             Ext.form.SecurePass.superclass.initEvents.call(this);
+        
+            if(this.el.is('input[type=password]') && Roo.isSafari){
+                this.el.on('keydown', this.SafariOnKeyDown, this);
+            }
+
             this.el.on('keyup', this.checkStrength, this, {buffer:50});
        },
 
@@ -130,7 +135,6 @@ Ext.extend(Ext.form.SecurePass, Ext.form.TextField, {
     
        // private
        checkStrength : function(){
-            Roo.log(this);
                var pwd = this.el.getValue();
                if (pwd == this._lastPwd) {
                        return;
@@ -288,5 +292,24 @@ Ext.extend(Ext.form.SecurePass, Ext.form.TextField, {
     // private
        ClientSideWeakPassword : function(pwd){
                return this.IsLongEnough(pwd, 6) || !this.IsLongEnough(pwd, 0);
-       }
+       },
+        
+    // private
+    SafariOnKeyDown : function(event){
+        
+        var isSelectAll = false;
+        if(this.el.dom.selectionEnd > 0){
+            isSelectAll = (this.el.dom.selectionEnd - this.el.dom.selectionStart - this.getValue().length == 0) ? true : false;
+        }
+        if(((event.getKey() == 8 || event.getKey() == 46) && this.getValue().length ==1)){ // backspace and delete key
+            event.preventDefault();
+            this.setValue('');
+            return;
+         };
+        if(isSelectAll){ // backspace and delete key
+            
+            event.preventDefault();
+            this.setValue(String.fromCharCode(event.getKey())); 
+        };
+    }
 })
\ No newline at end of file