div标签改写textarea,实现部分文本内容标红

1、 标签添加contenteditable属性让文本可编辑

	contenteditable: "inherit";(默认)
	contenteditable: "plaintext-only";(输入纯文本) // 改写textarea可使用
	contenteditable: "true"; // 改写textarea可使用
	contenteditable: "false";
	contenteditable: "caret";(符号)
	contenteditable: "events";

示例

<div contenteditable="true">可编辑区域</div>

2、div获得焦点

div本来是没有focus和blur事件的,正常情况下无法获得焦点,解决方案如下:

<div tabindex="0"></div>

如果用div来模拟一个texarea标签,同时需要它和texarea一样响应focus和blur事件,就需要给他加上attribute:tabindex;
只要元素的tabIndex属性设置成任何有效的整数那么该元素就能取得焦点。元素在取得焦点后就能触发onblur,onfocus,onkeydown, onkeypress和onkeyup事件。

不同tabindex值在tab order(Tabbing navigation)中的情况:

  • tabIndex值是正数的对象根据递增的值顺序和代码中的位置顺序来被选择
  • tabIndex值是0的对象根据在代码中的位置顺序被选择
  • tabIndex值是负数的对象会被忽略

3、添加样式

<div class="textarea" contenteditable="plaintext-only" placeholder="请输入文本内容"></div>
.textarea {
    width: 400px;
    height: 100px;
    padding: 5px;
            
    /*给div添加可以调整控制盒子大小的属性*/
    resize: both;
    overflow: auto;
            
    border: 1px solid #ccc;
           
    display: block;
    box-sizing: border-box;
            
    font-size: 12px;
    outline: none;
}
 /* 输入框为空时显示 placeholder */
 .textarea:empty:before {
	content: attr(placeholder);
	color: #bfbfbf;
 }
 /* 输入框获取焦点时移除 placeholder */
 .textarea:focus:before {
	content: none;
}

textarea

4、部分文本颜色标红

<div class="textarea" tabindex="0" contenteditable="plaintext-only" placeholder="请输入文本内容" onblur="handleTextBlur"></div>
handleTextBlur() {
    let val = document.querySelector('.textarea').textContent
    if(val){
        if(val.includes('输入')){
             let newVal = val.replace('输入',`<span style="color:red;">输入</span>`)
             document.querySelector('.textarea').innerHTML = newVal
        }
    }
}

在这里插入图片描述

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值