實現(xiàn)文本框內(nèi),部分字體顏色、字號等自定義

前言:最近產(chǎn)品提出一個新需求,要文本框的字體部分改變顏色、大小、換行等功能。在了解需求后,文本框input發(fā)現(xiàn)完全滿足不了現(xiàn)需求,于是尋求其它解決方案。

給定字符串

    let text = '這是一段正常的文字\r\n這是換行(<font color="red">這是提示的紅色</font>)\r\n這段文字為可編輯狀態(tài)'

要實現(xiàn)的效果

方案一

  • 當(dāng)發(fā)現(xiàn)文本框滿足不了需求時,我第一感覺時不想麻煩,雖然把每一段內(nèi)容拆成單獨的input標(biāo)簽也可實現(xiàn)但是工作量太大,太過麻煩。我的思路是利用盒子的屬性contenteditable直接將內(nèi)容丟進(jìn)div。
<div contenteditable="true" id="text">
</div>

<script>
let text = '這是一段正常的文字\r\n這是換行(<font color="red">這是提示的紅色</font>)\r\n這段文字為可編輯狀態(tài)';
let dom = document.getElementById('text');
dom.innerHTML= text;
// 當(dāng)編輯完成后 在取得div的內(nèi)容就可以了
let resultText = document.getElementById('text').innerHTML;
console.log(resultText);
</script>

但是這樣有一點滿足不了,text文本中的\r\n識別不了

最終方案

  • 既然div識別不了\r\n那就換個能識別的標(biāo)簽,完美解決。
<pre contenteditable="true" id="text">
</pre>

<script>
let text = '這是一段正常的文字\r\n這是換行(<font color="red">這是提示的紅色</font>)\r\n這段文字為可編輯狀態(tài)';
let dom = document.getElementById('text');
dom.innerHTML= text;
// 當(dāng)編輯完成后 在取得div的內(nèi)容就可以了
let resultText = document.getElementById('text').innerHTML;
console.log(resultText);
</script>

效果如下

完成任務(wù)~
如果有其它最優(yōu)解,歡迎留言指教。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容