いつもお世話になっております。
<div>内には文字列が入りますが、<font>タグが含まれる可能性があります。 例:あ<font color="#e51c23">あ</font>あ この時、”あ”という文字が20文字目までは入るようにして21文字目以降の”あ”は削除したいと考えてます。 一応下記のjsで21文字目以降の”あ”は削除できましたが、<font color="#e51c23"></font>のタグがなくなってしまいます。html
1<div class="contenteditable" contenteditable>ここに文字が入ります</div>
js
1$(document).on( 'blur',"div .contenteditable", function() { 2 var text = $(this).text(); 3 textTrim = text.substring(0,21); 4 $(this).html(textTrim); 5 6 //var stringOld = $(this).html(); 7 //for(i=0;i<=stringOld.length;i++){ 8 // ループで1文字ずつ取得して、21文字めの”あ”に来たらbreakして、$(this).html()で 9 // 上書く方法も思いつきましたが、入力する文字に"<"や”>”があったらどうしようと思いやめました 10 //} 11 } 12 });
なくなってしまう理由は、テキスト文字を取得した際にすでにタグを含んでいないということが原因だと思いますが、実現方法がどうしても思い浮かびません。
実現方法についてお知恵をお借りできたら幸いです。
--追記--
例
テキスト:今日はいい天気ですが、午後からはumbrellaが必要になるでしょう
※”いい”と”は”の文字の色が装飾されています。
入力された文字
html
1<div>今日は<font color="#e51c23">いい</font>天気ですが、午後から<font color="#e51c23">は</font>umbrellaが必要になるでしょう</div>
欲しい文字 (20文字) ⇒ 今日はいい天気ですが、午後からはumbr
※装飾されている文字の色をしているfontタグは失いたくないです。
html
1<div>今日は<font color="#e51c23">いい</font>天気ですが、午後から<font color="#e51c23">は</font>umbr</div>
回答2件
あなたの回答
tips
プレビュー