diff --git a/src/base/single/editor/editor.js b/src/base/single/editor/editor.js index c0a77c9f6..2dfcb8b6c 100644 --- a/src/base/single/editor/editor.js +++ b/src/base/single/editor/editor.js @@ -109,6 +109,7 @@ BI.Editor = BI.inherit(BI.Single, { if (e.keyCode !== BI.KeyCode.TAB && self.watermark) { self.watermark.invisible(); } + self.fireEvent(BI.Editor.EVENT_QUICK_DOWN, arguments); }); this.editor.on(BI.Input.EVENT_VALID, function () { @@ -360,6 +361,7 @@ BI.Editor.EVENT_FOCUS = "EVENT_FOCUS"; BI.Editor.EVENT_BLUR = "EVENT_BLUR"; BI.Editor.EVENT_CLICK = "EVENT_CLICK"; BI.Editor.EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; +BI.Editor.EVENT_QUICK_DOWN = "EVENT_QUICK_DOWN"; BI.Editor.EVENT_SPACE = "EVENT_SPACE"; BI.Editor.EVENT_BACKSPACE = "EVENT_BACKSPACE"; diff --git a/src/case/editor/editor.sign.js b/src/case/editor/editor.sign.js index 0fb65fa0d..a624d78a2 100644 --- a/src/case/editor/editor.sign.js +++ b/src/case/editor/editor.sign.js @@ -87,6 +87,9 @@ BI.SignEditor = BI.inherit(BI.Widget, { this.editor.on(BI.Editor.EVENT_KEY_DOWN, function (v) { self.fireEvent(BI.SignEditor.EVENT_KEY_DOWN, arguments); }); + this.editor.on(BI.Editor.EVENT_QUICK_DOWN, function () { + self.fireEvent(BI.SignEditor.EVENT_QUICK_DOWN, arguments); + }); this.editor.on(BI.Editor.EVENT_VALID, function () { self.fireEvent(BI.SignEditor.EVENT_VALID, arguments); @@ -265,6 +268,7 @@ BI.SignEditor.EVENT_FOCUS = "EVENT_FOCUS"; BI.SignEditor.EVENT_BLUR = "EVENT_BLUR"; BI.SignEditor.EVENT_CLICK = "EVENT_CLICK"; BI.SignEditor.EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; +BI.SignEditor.EVENT_QUICK_DOWN = "EVENT_QUICK_DOWN"; BI.SignEditor.EVENT_CLICK_LABEL = "EVENT_CLICK_LABEL"; BI.SignEditor.EVENT_START = "EVENT_START"; diff --git a/src/widget/numbereditor/number.editor.js b/src/widget/numbereditor/number.editor.js index a2136bb10..13f360baa 100644 --- a/src/widget/numbereditor/number.editor.js +++ b/src/widget/numbereditor/number.editor.js @@ -39,9 +39,33 @@ BI.NumberEditor = BI.inherit(BI.Widget, { if (o.validationChecker === BI.emptyFn && !self._checkValueInRange(parsedValue)) { return false; } + return o.validationChecker(parsedValue); }, - errorText: o.errorText + errorText: o.errorText, + listeners: [ + { + eventName: BI.SignEditor.EVENT_QUICK_DOWN, + action: e => { + if ([BI.KeyCode.UP, BI.KeyCode.DOWN].includes(e.keyCode)) { + e.preventDefault(); + } + }, + }, + { + eventName: BI.SignEditor.EVENT_KEY_DOWN, + action: (keycode) => { + if (keycode === BI.KeyCode.UP) { + this._finetuning(o.step); + + return; + } + if (keycode === BI.KeyCode.DOWN) { + this._finetuning(-o.step); + } + }, + } + ], }); this.editor.on(BI.TextEditor.EVENT_CHANGE, function () { // 大多数时候valueFormatter往往需要配合valueParser一起使用 @@ -68,7 +92,7 @@ BI.NumberEditor = BI.inherit(BI.Widget, { forceNotSelected: true, trigger: "lclick,", debounce: false, - cls: (o.simple ? "solid-triangle-top-font " : "add-up-font bi-border-left ") + "top-button bi-list-item-active2 icon-size-12" + cls: (o.simple ? "solid-triangle-top-font " : "add-up-font bi-border-left ") + "top-button bi-list-item-active2 icon-size-12", }); this.topBtn.on(BI.IconButton.EVENT_CHANGE, function () { self._finetuning(o.step); @@ -80,7 +104,7 @@ BI.NumberEditor = BI.inherit(BI.Widget, { trigger: "lclick,", forceNotSelected: true, debounce: false, - cls: (o.simple ? "solid-triangle-bottom-font " : "minus-down-font bi-border-left ") + "bottom-button bi-list-item-active2 icon-size-12" + cls: (o.simple ? "solid-triangle-bottom-font " : "minus-down-font bi-border-left ") + "bottom-button bi-list-item-active2 icon-size-12", }); this.bottomBtn.on(BI.IconButton.EVENT_CHANGE, function () { self._finetuning(-o.step); @@ -101,17 +125,17 @@ BI.NumberEditor = BI.inherit(BI.Widget, { { column: 0, row: 0, - el: this.topBtn + el: this.topBtn, }, { column: 0, row: 1, - el: this.bottomBtn + el: this.bottomBtn, } - ] + ], }, - width: 23 + width: 23, } - ] + ], }); }, @@ -125,6 +149,7 @@ BI.NumberEditor = BI.inherit(BI.Widget, { _checkValueInRange: function (v) { var o = this.options; + return !!(BI.isNumeric(v) && BI.parseFloat(v) >= o.min && BI.parseFloat(v) <= o.max); },