需求:点击添加,生成空白行,表格行里面嵌入el-input。当我点击在运输件数里面点击enter键,下一行的el-input自动获取焦点
原有方法:动态绑定ref,然后通过this.$refs.xxx.focus获取焦点。关键代码
template关键代码:
<el-table-column label="运输件数" width="90" align="center">
<template slot-scope="scope">
<el-input
:ref="'goodsQty'+scope.$index"
v-model="scope.row.goodsQty"
:disabled="customerDisabled"
size="mini" @keyup.enter.native="doEnter(scope)"
@focus="$event.currentTarget.select()"
/>
</template>
</el-table-column>
js关键代码:
that.$nextTick(() => {
this.$refs['goodsQty'+(scope.$index+1)].focus()
},50)
以上是不行的,能通过$refs取到这个元素,但是无法聚焦。
解决方法:使用document.getElementById获取元素,然后focus()
document.getElementById('goodsQty' + (row.$index + 1)).focus()
原因:不知道是bug还是其他什么愿意,找到原因之后再补上来