瀏覽代碼

prevent default for keys like backspace, support - or " or ' or / keys in firefox

Trevor Baron 6 年之前
父節點
當前提交
768f52ce97
共有 1 個文件被更改,包括 15 次插入4 次删除
  1. 15 4
      gui/src/2D/controls/inputText.ts

+ 15 - 4
gui/src/2D/controls/inputText.ts

@@ -288,12 +288,17 @@ export class InputText extends Control implements IFocusableControl {
     }
 
     /** @hidden */
-    public processKey(keyCode: number, key?: string) {
+    public processKey(keyCode: number, key?: string, evt?: KeyboardEvent) {
         // Specific cases
         switch (keyCode) {
             case 32: //SPACE
                 key = " "; //ie11 key for space is "Spacebar"
                 break;
+            case 191: //SLASH
+                if(evt){
+                    evt.preventDefault();
+                }
+                break;
             case 8: // BACKSPACE
                 if (this._text && this._text.length > 0) {
                     if (this._cursorOffset === 0) {
@@ -305,6 +310,9 @@ export class InputText extends Control implements IFocusableControl {
                         }
                     }
                 }
+                if(evt){
+                    evt.preventDefault();
+                }
                 return;
             case 46: // DELETE
                 if (this._text && this._text.length > 0) {
@@ -343,8 +351,11 @@ export class InputText extends Control implements IFocusableControl {
                 this._markAsDirty();
                 return;
             case 222: // Dead
+                if(evt){
+                    evt.preventDefault();
+                }
                 this.deadKey = true;
-                return;
+                break;
         }
 
         // Printable characters
@@ -353,7 +364,7 @@ export class InputText extends Control implements IFocusableControl {
                 (keyCode === 32) ||                     // Space
                 (keyCode > 47 && keyCode < 60) ||       // Numbers
                 (keyCode > 64 && keyCode < 91) ||       // Letters
-                (keyCode > 185 && keyCode < 193) ||     // Special characters
+                (keyCode > 159 && keyCode < 193) ||     // Special characters
                 (keyCode > 218 && keyCode < 223) ||     // Special characters
                 (keyCode > 95 && keyCode < 112))) {     // Numpad
             this._currentKey = key;
@@ -373,7 +384,7 @@ export class InputText extends Control implements IFocusableControl {
 
     /** @hidden */
     public processKeyboard(evt: KeyboardEvent): void {
-        this.processKey(evt.keyCode, evt.key);
+        this.processKey(evt.keyCode, evt.key, evt);
     }
 
     public _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void {