追加削除が可能なinput要素を作って半角(半角英数:123AbCなど)全角(全角かな:明日あさって等)が混ざった状態で入力されているinputの文字数を半角0.5全角1でカウントし数えた値を合計し、またインプットを削除した場合は合計から引きたいです
下記でinputセットを追加・削除しています。
html
1 2//追加するhtmlセット 3<div class="hash_set_template_inst"> 4<div class="hash_block"> 5<input type="text" placeholder="" class="" autocomplete="off" value="#"> 6<button type="button" class="hash_del"><span><i>削除</i></span></button> 7</div></div> 8 9<div class="hash_area fb"> 10<p class="txt_cnt"><span class="fb_txt">0</span>文字</p> 11<div class="hash_fb"> 12<p class="add_area"><button type="button" class="add_hash_btn inst_hash">追加</button></p> 13</div> 14</div>
jquery
1//セットの追加 2 $(".add_hash_btn.inst_hash").on("click",function () { 3 var html = $('.hash_set_template_inst').html(); 4 var hash_set_t = $.parseHTML(html); 5 var append = $(this).parent('.add_area'); 6 append.before(hash_set_t); 7 }); 8//セットの削除 9 $(document).on('click', '.hash_del', function () { 10 var elm = $(this).closest('div'); 11 elm.remove() 12 }); 13 14$(document).on("keyup change",".hash_fb input",function(){ 15 16 var o = $(this); 17 var str = o.val(); 18 var r = 0; 19 for (var i = 0; i < str.length; ++i) { 20 var c = str.charCodeAt(i); 21 if (c >= 0x0 && c <= 0x7f) { 22 r += 1; 23 } else { 24 r += 2; 25 } 26 } 27var all = r/2 28console.log(all) //ここまでで各インプットの全半角数は出ています 29 30var total = 0; 31 $( ".hash_fb input" ).each( function() { 32 total += all 33//ここで合計しているつもりなのですが入力するたびに0からはじまってしまいinputの全角半角も全て1で計算されてしまいます。 34 } ) 35 $( ".fb_txt" ).text(total); 36 37});
またこちらで(https://teratail.com/questions/216377)全半角関係なく1とした場合の合計は解決しています。
回答2件
あなたの回答
tips
プレビュー