最近做项目时,遇到一个问题。
关于element 多行输入框高度问题,在编辑的时候,高度很正常,自适应,写几行,高度就多高。但是编辑完成保存后,再次打开高度就多了很多,多了好几行空白。看源码知道高度是计算得出的,需求又要求高度自适应,样式肯定是不行了,想别的办法,然后得出了两个方案。如下:
方法一:
在获取到数据后,对数据进行在处理,使得输入框的高度重新计算。
setTimeout(() => {
this.lists.forEach(list => {
if (list.hasOwnProperty('children')) {
var o_name = list.name;
list.name = o_name + ' ';
list.children.forEach(kr => {
if (kr.hasOwnProperty('children')) {
var kr_name = kr.name;
kr.name = kr_name + ' ';
kr.children.forEach(e => {
var e_name = e.name;
e.name = e_name + ' ';
})
}
})
}
})
}, 100);
方法二:
改变输入框的类型,默认是单行输入框,再次编辑的时候改变输入框类型为多行输入框,也是为了重新计算高度
<el-input
:type="input_type"
:placeholder="'请输入(最多不超过500字)'"
v-model="scope.row.name"
class="ipt-hover edit_name"
:ref="!scope.row.id?'kr_input':'editInput2'"
maxlength="500"
@blur="save($event,scope.row)"
@focus="()=>rowClick(index,scope.$index)"
autosize
clearable>
</el-input>
data里先定义input_type:'text'
在获取数据的时候改变input_type为textarea 即可
总结:其实两种方案都是为了让输入框能重新计算高度,只不过第二种更简单,推荐!(仅供参考)