vue+elementui 中 @keyup 键盘上下左右移动聚焦

            <template>
                  <el-table :data="CreditUnclearOutlineList" border style="width: 100%" ref="table">
                                <el-table-column align="center" prop="name" label="名称" width="150">
                                </el-table-column>
                                <el-table-column align="center" label="正常">
                                    <el-table-column align="center" sortable prop="normalB" label="笔数">
                                        <template scope="scope">
                                            <span>
                                                <el-input style="width: 90px" placeholder="笔数" v-model="scope.row.normalB" @change="handleCreditChange()" class="table_input normalB_input" @keyup.native="show($event,scope.$index)"></el-input>
                                            </span>
                                        </template>
                                    </el-table-column>
                                    <el-table-column align="center" sortable prop="normalY" label="余额(万元)">
                                        <template scope="scope">
                                            <span>
                                                <el-input style="width: 90px" placeholder="余额" v-model="scope.row.normalY" @change="handleCreditChange()" @blur="handleBalanceBlur($event)" @focus="handleBalanceClear($event)" class="table_input normalY_input" @keyup.native="show($event,scope.$index)"></el-input>
                                            </span>
                                        </template>
                                    </el-table-column>
                                </el-table-column>
                                <el-table-column align="center" label="关注">
                                    <el-table-column align="center" sortable prop="focusB" label="笔数">
                                        <template scope="scope">
                                            <span>
                                                <el-input style="width: 90px" placeholder="笔数" v-model="scope.row.focusB" @change="handleCreditChange()" class="table_input focusB_input" @keyup.native="show($event,scope.$index)"></el-input>
                                            </span>
                                        </template>
                                    </el-table-column>
                                    <el-table-column align="center" sortable prop="focusY" label="余额(万元)">
                                        <template scope="scope">
                                            <span>
                                                <el-input style="width: 90px" placeholder="余额" v-model="scope.row.focusY" @change="handleCreditChange()" @blur="handleBalanceBlur($event)" @focus="handleBalanceClear($event)" class="table_input focusY_input" @keyup.native="show($event,scope.$index)"></el-input>
                                            </span>
                                        </template>
                                    </el-table-column>
                                </el-table-column>
                                <el-table-column align="center" label="不良">
                                    <el-table-column align="center" sortable prop="badB" label="笔数">
                                        <template scope="scope">
                                            <span>
                                                <el-input style="width: 90px" placeholder="笔数" v-model="scope.row.badB" @change="handleCreditChange()" class="table_input badB_input" @keyup.native="show($event,scope.$index)"></el-input>
                                            </span>
                                        </template>
                                    </el-table-column>
                                    <el-table-column align="center" sortable prop="badY" label="余额(万元)">
                                        <template scope="scope">
                                            <span>
                                                <el-input style="width: 90px" placeholder="余额" v-model="scope.row.badY" @change="handleCreditChange()" @blur="handleBalanceBlur($event)" @focus="handleBalanceClear($event)" class="table_input badY_input" @keyup.native="show($event,scope.$index)"></el-input>
                                            </span>
                                        </template>
                                    </el-table-column>
                                </el-table-column>
                                <el-table-column align="center" prop="amountY" sortable label="余额(万元)">
                                    <template scope="scope">
                                        <span>{{scope.row.amountY}}</span>
                                    </template>
                                </el-table-column>
                            </el-table>
                        </template>
//键盘触发事件
show(ev,index){ let newIndex ;
//通过ev 获取 当前input 名称 用于判断属于哪列 let clssName = ev.target.offsetParent.className; //每一列 if(clssName.indexOf('normalB_input') != -1){ newIndex = index*6 ; } else if (clssName.indexOf('normalY_input') != -1) { newIndex = index*6 + 1 ; } else if (clssName.indexOf('focusB_input') != -1) { newIndex = index*6 + 2; } else if (clssName.indexOf('focusY_input') != -1) { newIndex = index*6 + 3; } else if (clssName.indexOf('badB_input') != -1) { newIndex = index*6 + 4; } else if (clssName.indexOf('badY_input') != -1) { newIndex = index*6 + 5; } //获取每一列的input名称 let normalB_input = document.getElementsByClassName('normalB_input') let normalY_input = document.getElementsByClassName('normalY_input') let focusB_input = document.getElementsByClassName('focusB_input') let focusY_input = document.getElementsByClassName('focusY_input') let badB_input = document.getElementsByClassName('badB_input') let badY_input = document.getElementsByClassName('badY_input') //获取54个input let inputAll = document.querySelectorAll('.table_input input'); //向上 =38 if(ev.keyCode == 38){ //当焦点在第一行的时候 按向上的时候焦点要聚焦到前一列的最后一个 if(newIndex >=1 && newIndex<=5){ newIndex = newIndex + 47; } else { newIndex -= 6 ; } if( inputAll[newIndex] ){ inputAll[newIndex].focus(); } } //下 = 40 if(ev.keyCode == 40){ //当newIndex 在最后一行的时候 焦点要聚焦到 下一列的第一个 if(newIndex>= 48 && newIndex<53){ newIndex = (newIndex%8) + 1 }else { newIndex += 6 ; } if( inputAll[newIndex] ){ inputAll[newIndex].focus(); } } //左 = 37 if(ev.keyCode == 37){ newIndex -= 1 ; if( inputAll[newIndex] ){ inputAll[newIndex].focus(); } } //右 = 39 if(ev.keyCode == 39){ newIndex += 1 ; if( inputAll[newIndex] ){ inputAll[newIndex].focus(); } } },

 

 

注意点: 

1.vue element-ui 绑定@keyup事件无效 ,加上.native覆盖原有封装的keyup事件即可

 

转载于:https://www.cnblogs.com/wangRong-smile/p/9037580.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js + Element UI ,`@click` 指令可以用于绑定 DOM 元素的点击事件,不同的 `@click` 事件可以绑定不同的方法,用于不同的操作。 例如,在一个按钮上绑定多个 `@click` 事件,可以实现多个操作的同时执行,如下所示: ```html <template> <div> <el-button @click="doSomething1" @click="doSomething2">Do Something</el-button> </div> </template> <script> export default { methods: { doSomething1() { console.log("Doing Something 1"); }, doSomething2() { console.log("Doing Something 2"); } } }; </script> ``` 在上面的代码,一个按钮上绑定了两个 `@click` 事件,分别绑定了 `doSomething1` 和 `doSomething2` 方法,当用户点击按钮时,这两个方法会同时执行。 除了多个方法同时执行以外,不同的 `@click` 事件还可以绑定不同的方法,用于实现不同的功能。例如,一个按钮可以绑定 `showDialog` 和 `hideDialog` 方法,用于显示和隐藏一个弹出窗口,如下所示: ```html <template> <div> <el-button @click="showDialog">Show Dialog</el-button> <el-dialog :visible="dialogVisible" @close="hideDialog"> <p>Dialog Content</p> </el-dialog> </div> </template> <script> export default { data() { return { dialogVisible: false }; }, methods: { showDialog() { this.dialogVisible = true; }, hideDialog() { this.dialogVisible = false; } } }; </script> ``` 在上面的代码,一个按钮绑定了 `showDialog` 方法,用于显示一个弹出窗口,弹出窗口绑定了 `@close` 事件,用于隐藏弹出窗口,这两个方法分别绑定了不同的 `@click` 和 `@close` 事件,用于实现不同的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值