vue键盘绑定Ctrl+方向键移动光标位置

本文介绍如何在Vue应用中使用键盘事件监听器,实现Ctrl+左右上下键来移动光标焦点,涉及的方法包括goRight, goLeft, goUp, goDown,适用于多个输入元素间的焦点切换。" 88690448,8312262,PDF文件快速添加书签指南,"['应用技巧', 'PDF处理', '文件管理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1.绑定@key事件

<el-input

                            style="width: 210px"

                            type="text"

                            v-model="item.elementNm"

                            :id="forId('elementNm', scope.$index)"

                            @keyup.ctrl.right.native="

                              goRight('elementNm', scope.$index)

                            "

                            @keyup.ctrl.left.native="

                              goLeft('elementNm', scope.$index)

                            "

                            @keyup.ctrl.up.native="

                              goUp('elementNm', scope.$index)

                            "

                            @keyup.ctrl.down.native="

                              goDown('elementNm', scope.$index)

                            "

></el-input>

2.绑定方法

methods: {

    goRight(name, index) {

      if (name == "optType") {

        if (document.getElementById("elementType" + index.toString()) != null) {

          document.getElementById("optType" + index.toString()).click();

          document.getElementById("elementType" + index.toString()).click();

          document.getElementById("elementType" + index.toString()).focus();

        } else if (

          document.getElementById("elementNm" + index.toString()) != null

        ) {

          document.getElementById("optType" + index.toString()).click();

          document.getElementById("elementNm" + index.toString()).click();

          document.getElementById("elementNm" + index.toString()).focus();

        } else if (

          document.getElementById("elementId" + index.toString()) != null

        ) {

          document.getElementById("optType" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).focus();

        } else if (

          document.getElementById("elementGetWay" + index.toString()) != null

        ) {

          document.getElementById("optType" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).focus();

        } else if (

          document.getElementById("elementOptWay" + index.toString()) != null

        ) {

          document.getElementById("optType" + index.toString()).click();

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("elementOptWay" + index.toString()).focus();

        } else if (

          document.getElementById("optVal" + index.toString()) != null

        ) {

          document.getElementById("optType" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).focus();

        }

      } else if (name == "elementType") {

        if (document.getElementById("elementNm" + index.toString()) != null) {

          document.getElementById("elementType" + index.toString()).click();

          document.getElementById("elementNm" + index.toString()).click();

          document.getElementById("elementNm" + index.toString()).focus();

        } else if (

          document.getElementById("elementId" + index.toString()) != null

        ) {

          document.getElementById("elementType" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).focus();

        } else if (

          document.getElementById("elementGetWay" + index.toString()) != null

        ) {

          document.getElementById("elementType" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).focus();

        } else if (

          document.getElementById("elementOptWay" + index.toString()) != null

        ) {

          document.getElementById("elementType" + index.toString()).click();

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("elementOptWay" + index.toString()).focus();

        } else if (

          document.getElementById("optVal" + index.toString()) != null

        ) {

          document.getElementById("elementType" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).focus();

        }

      } else if (name == "elementNm") {

        if (document.getElementById("elementId" + index.toString()) != null) {

          document.getElementById("elementNm" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).focus();

        } else if (

          document.getElementById("elementGetWay" + index.toString()) != null

        ) {

          document.getElementById("elementGetWay" + index.toString()).focus();

        } else if (

          document.getElementById("elementOptWay" + index.toString()) != null

        ) {

          document.getElementById("elementOptWay" + index.toString()).focus();

        } else if (

          document.getElementById("optVal" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).focus();

        }

      } else if (name == "elementId") {

        if (

          document.getElementById("elementGetWay" + index.toString()) != null

        ) {

          document.getElementById("elementId" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).focus();

        } else if (

          document.getElementById("elementOptWay" + index.toString()) != null

        ) {

          document.getElementById("elementOptWay" + index.toString()).focus();

        } else if (

          document.getElementById("optVal" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).focus();

        }

      } else if (name == "elementGetWay") {

        if (

          document.getElementById("elementOptWay" + index.toString()) != null

        ) {

          document.getElementById("elementGetWay" + index.toString()).click();

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("elementOptWay" + index.toString()).focus();

        } else if (

          document.getElementById("optVal" + index.toString()) != null

        ) {

          document.getElementById("elementGetWay" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).focus();

        }

      } else if (name == "elementOptWay") {

        if (document.getElementById("optVal" + index.toString()) != null) {

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("optVal" + index.toString()).focus();

        }

      } else if (name == "optVal") {

        document.getElementById("optType" + index.toString()).focus();

      }

    },

    goLeft(name, index) {

      if (name == "optVal") {

        if (

          document.getElementById("elementOptWay" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("elementOptWay" + index.toString()).focus();

        } else if (

          document.getElementById("elementGetWay" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).focus();

        } else if (

          document.getElementById("elementId" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).focus();

        } else if (

          document.getElementById("elementNm" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("elementNm" + index.toString()).focus();

        } else if (

          document.getElementById("elementType" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("elementType" + index.toString()).focus();

        } else if (

          document.getElementById("optType" + index.toString()) != null

        ) {

          document.getElementById("optVal" + index.toString()).click();

          document.getElementById("optType" + index.toString()).focus();

        }

      } else if (name == "elementOptWay") {

        if (

          document.getElementById("elementGetWay" + index.toString()) != null

        ) {

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("elementGetWay" + index.toString()).focus();

        } else if (

          document.getElementById("elementId" + index.toString()) != null

        ) {

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("elementId" + index.toString()).focus();

        } else if (

          document.getElementById("elementNm" + index.toString()) != null

        ) {

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("elementNm" + index.toString()).focus();

        } else if (

          document.getElementById("elementType" + index.toString()) != null

        ) {

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("elementType" + index.toString()).focus();

        } else if (

          document.getElementById("optType" + index.toString()) != null

        ) {

          document.getElementById("elementOptWay" + index.toString()).click();

          document.getElementById("optType" + index.toString()).focus();

        }

      } else if (name == "elementGetWay") {

        if (document.getElementById("elementId" + index.toString()) != null) {

          document.getElementById("elementId" + index.toString()).focus();

        } else if (

          document.getElementById("elementNm" + index.toString()) != null

        ) {

          document.getElementById("elementNm" + index.toString()).focus();

        } else if (

          document.getElementById("elementType" + index.toString()) != null

        ) {

          document.getElementById("elementType" + index.toString()).focus();

        } else if (

          document.getElementById("optType" + index.toString()) != null

        ) {

          document.getElementById("optType" + index.toString()).focus();

        }

      } else if (name == "elementId") {

        if (document.getElementById("elementNm" + index.toString()) != null) {

          document.getElementById("elementNm" + index.toString()).focus();

        } else if (

          document.getElementById("elementType" + index.toString()) != null

        ) {

          document.getElementById("elementType" + index.toString()).focus();

        } else if (

          document.getElementById("optType" + index.toString()) != null

        ) {

          document.getElementById("optType" + index.toString()).focus();

        }

      } else if (name == "elementNm") {

        if (document.getElementById("elementType" + index.toString()) != null) {

          document.getElementById("elementNm" + index.toString()).click();

          document.getElementById("elementType" + index.toString()).focus();

        } else if (

          document.getElementById("optType" + index.toString()) != null

        ) {

          document.getElementById("elementNm" + index.toString()).click();

          document.getElementById("optType" + index.toString()).focus();

        }

      } else if (name == "elementType") {

        if (document.getElementById("optType" + index.toString()) != null) {

          document.getElementById("elementType" + index.toString()).click();

          document.getElementById("optType" + index.toString()).focus();

        }

      } else if (name == "optType") {

        if (document.getElementById("optVal" + index.toString()) != null) {

          document.getElementById("optVal" + index.toString()).focus();

        }

      }

    },

    goUp(name, index) {

      var cnt = this.caseOptList.length;

      var n = 0;

      var a = 1;

      if (index == 0) {

        for (n; n <= cnt; n++) {

          if (document.getElementById(name + (cnt - n).toString()) != null) {

            document.getElementById(name + "0".toString()).click();

            document.getElementById(name + (cnt - n).toString()).focus();

            return;

          }

        }

      } else {

        for (a; a <= cnt; a++) {

          if (document.getElementById(name + (index - a).toString()) != null) {

            document.getElementById(name + (index - a + 1).toString()).click();

            document.getElementById(name + (index - a).toString()).focus();

            return;

          }

        }

      }

    },

    goDown(name, index) {

      var cnt = this.caseOptList.length;

      var n = cnt;

      var a = 1;

      if (index == cnt - 1) {

        for (n; n >= 0; n--) {

          if (document.getElementById(name + (cnt - n).toString()) != null) {

            document.getElementById(name + (cnt - 1).toString()).click();

            document.getElementById(name + (cnt - n).toString()).focus();

            return;

          }

        }

      } else {

        for (a; a <= cnt; a++) {

          if (document.getElementById(name + (index + a).toString()) != null) {

            document.getElementById(name + (index + a - 1).toString()).click();

            document.getElementById(name + (index + a).toString()).focus();

            return;

          }

        }

      }

    },

    forId(name, index) {

      return name + index;

    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值