如何实现网页元素的双击修改
Posted on Wed, 25 Dec 2024 16:15:35 +0800 by LiangMingJian
需求
在浏览网页时,可以对不可编辑的 “文本框” 双击后,将其变更为编辑状态。
实现
$('.edit').on('dblclick', function(event){
let e = event.target
if(e.innerHTML.indexOf('type="text"') > 0 ){ //判断是否进入编辑状态
return
}
let newdiv = document.createElement( 'input' )//创建一个input标签
newdiv.type = 'text' //设置标签类型
newdiv.className = 'edit-input'
newdiv.value = e.innerHTML //将原来文本内容赋值给input标签
e.innerHTML = '' //清除原来的内容
e.appendChild(newdiv) //将input标签添加到元素中
newdiv.setSelectionRange(0, e.innerHTML.length) //设置光标选中位置
newdiv.focus() //设置元素获得焦点,失去焦点触发onblur
newdiv.onblur = blur //设置失去焦点事件
function blur(){
e.innerHTML = this.value //将文本内容重新赋值给元素
}
newdiv.onkeyup = function(key){ //设置回车时执行失去焦点事件
if(key.key == 'Enter'){ newdiv.blur() }
}
})