- A+
1、禁止textarea禁止拉伸(拖拽)和编辑样式:
// 禁止拉伸: resize:none
<textarea style="resize:none;" >自己设置宽高即可</textarea>
//readonly 可复制不可编辑
<textarea type="textarea" readonly>不可编辑</textarea>
//readonly 可复制不可编辑有背景色
<textarea type="textarea" disabled>不可编辑</textarea>
二者效果区别:
readonly:没背景颜色,保留滚动条(适合文字内容多的场景使用)
disabled:有背景颜色,不保留滚动功能,(合文字少不需要滚动的场景使用)
配合鼠标变成禁用图标使用 style="cursor:no-drop;"
2、Vue:
template:
<div class="box" v-for="(item,index) in dataList" :key="index">
<textarea v-model="item.text" :disabled="item.isSave"></textarea>
//v-model="item.text"双向绑定数据,:disabled="item.isSave"存在isSave时禁止更改
<el-button type="success" @click="editBtn(index,false)" v-show="item.isSave">
编辑
</el-button>
<el-button type="success" @click="editBtn(index,true)" v-show="!item.isSave">
取消
</el-button>
<el-button type="success" @click="saveBtn(index)" v-show="!item.isSave">
保存
</el-button>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
情况2:
<el-form-item label="理由" prop="text">
<el-input type="textarea" v-model="item.text" rows="6" cols="6">
</el-form-item>
1
2
3
4
script:
import {getDataList,getDataSave} from "@/api/"
export default{
data(){
return{
dataList:[],//存储数据
}
},
created(){
this.init()
},
methods:{
init(){//获取数据
getDataList().then(res=>{
res.data.data.forEach(arr=>{
arr["isSave"]=true;//自己添加isSave属性,判断是否编辑还是取消保存
})
this.dataList=res.data.data
})
},
editBtn(index,type){//编辑与取消按钮
this.dataList[index].isSave=type
//取消时,后添加的数据不保存(v-model双向绑定点击取消按钮后恢复原数据)
//法一:重新刷新页面
if(type==true){//取消时
this.init();//重新刷新页面
this.$message.warning('数据已取消保存')
}
//法二:本地存储
if(type==false){//编辑时
localStorage.setItem('obj',JSON.stringify(this.dataList))
}
if(type==true){//取消时
let Item=JSON.parse(localStorage.getItem('obj'))
this.dataList=Item
}
},
saveBtn(item){//保存按钮
if(item.text==""){
this.$message.warning("textarea不能为空")
return
}
let param={...item} //获取当前表单的数据并传入后台
getDataSave(param).then(res=>{
if(res.data.code==0){
this.$message.success("数据保存成功");
}
this.init();//重新刷新页面
})
}
}
}