vue3中ctrl加回车换行,光标位置设置
<input v-model="text" type="textarea" @click="sbwz" @keydown="keysbwz" @keydown.enter.ctrl.exact.prevent="ctrlEnter" />
// 暂存光标位置,后续截取换行使用
const textSplit=ref(0)
// 判断是否改变了上次光标位置
const isTest=ref(true)
// 获取光标位置
const sbwz=()=>{
isTest.value=true
// 延时获取鼠标位置,
setTimeout(()=>{
var textarea: any = document.querySelectorAll(".van-field__control")[0]; // 根据id获取文本框元素
textSplit.value=textarea.selectionStart;
},10)
}
// 监听键盘按下事件
const keysbwz=(event:any)=>{
switch (event.keyCode) {
case 37: // 左键
sbwz()
break;
case 38: // 上键
sbwz()
break;
case 39: // 右键
sbwz()
break;
case 40: // 下键
sbwz()
break;
}
}
// 回车加CTRL键 换行
let ctrlEnter = () => {
text.value =text.value.substring(0,textSplit.value)+ '\n'+text.value.substring(textSplit.value);
// 获取文本框元素
var textarea: any = document.querySelectorAll(".van-field__control")[0]; // 根据id获取文本框元素
textarea.value = textarea.value.substring(0,textSplit.value)+ '\n'+textarea.value.substring(textSplit.value);
// 判断是否改变了光标位置,如果改变了则变为false。没有改变则将当前光标位置加一,方便下次换行使用
if(isTest.value){
isTest.value=false
}else{
textSplit.value= textSplit.value+1
}
textarea.setSelectionRange(textSplit.value+1,textSplit.value+1)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!