Selaa lähdekoodia

fix: 修复在进行组件配置,输入框调整光标位置时,光标位置没有改变而是调整了组件位置的问题

wu.jian2 2 vuotta sitten
vanhempi
sitoutus
6293740718
1 muutettua tiedostoa jossa 28 lisäystä ja 20 poistoa
  1. 28 20
      data-room-ui/packages/js/mixins/multipleSelectMixin.js

+ 28 - 20
data-room-ui/packages/js/mixins/multipleSelectMixin.js

@@ -32,27 +32,35 @@ export default {
       pasteCharts: 'pasteCharts'
     }),
     keydown (event) {
-      if (event.keyCode === 37) {
-        // 关闭默认事件
-        event.preventDefault()
-        // 左箭头键被按下
-        this.changeActivePos({ diffX: -1, diffY: 0 })
-      } else if (event.keyCode === 38) {
-        // 关闭默认事件
-        event.preventDefault()
-        // 上箭头键被按下
-        this.changeActivePos({ diffX: 0, diffY: -1 })
-      } else if (event.keyCode === 39) {
-        // 关闭默认事件
-        event.preventDefault()
-        // 右箭头键被按下
-        this.changeActivePos({ diffX: 1, diffY: 0 })
-      } else if (event.keyCode === 40) {
-        // 关闭默认事件
-        event.preventDefault()
-        // 下箭头键被按下
-        this.changeActivePos({ diffX: 0, diffY: 1 })
+      // 获取当前获得焦点的元素
+      const activeElement = document.activeElement
+      // 判断当前获得焦点的元素是否是一个输入元素
+      const isInputFocused = activeElement instanceof HTMLInputElement || activeElement instanceof HTMLTextAreaElement
+      if (!isInputFocused) {
+        // 当前页面没有输入聚焦
+        if (event.keyCode === 37) {
+          // 关闭默认事件
+          event.preventDefault()
+          // 左箭头键被按下
+          this.changeActivePos({ diffX: -1, diffY: 0 })
+        } else if (event.keyCode === 38) {
+          // 关闭默认事件
+          event.preventDefault()
+          // 上箭头键被按下
+          this.changeActivePos({ diffX: 0, diffY: -1 })
+        } else if (event.keyCode === 39) {
+          // 关闭默认事件
+          event.preventDefault()
+          // 右箭头键被按下
+          this.changeActivePos({ diffX: 1, diffY: 0 })
+        } else if (event.keyCode === 40) {
+          // 关闭默认事件
+          event.preventDefault()
+          // 下箭头键被按下
+          this.changeActivePos({ diffX: 0, diffY: 1 })
+        }
       }
+
       // ctrl/command + s保存
       if ((event.ctrlKey || event.metaKey) && event.keyCode === 83) {
         // 关闭默认事件