フォーム入力で半角20字、全角10字までの制限をしたいです。
現時点で半角を1字、全角を2字にし最大を20字と設定しました。
20字に達したら入力できないようにしたいのですが、その方法が分からず、、
警告や送信ボタンを無効化等はヒットしますが、
出来れば入力オーバーしたら文字がカットするようにしたいです。
this.value.substr(0 ,20)としましたが
Cannot read property 'substr' of undefinedとでます
そもそも、this.valueでいってしまうと結局半角も1字と数えられるのでしょうか、、
いい方法あれば、ぜひ教えてください。
HTML
1<div class="comment Wrap"> 2 <form action="URL" method="get" class="comment_form" onsubmit="c_done();return false;"> 3 <textarea name="comment" rows="6" cols="10" onkeyup="TextLength(this.value);"></textarea> 4 <div class="send"> 5 <input class="btn" type="submit" value="送信"> 6 </div> 7 </form> 8</div>
JS
1//文字数制限 2function TextLength( str ) { 3 var len = 0; 4 var string = ""; 5 var maxlen = 20; 6 for(i=0;i<str.length;i++) { 7 STR = str.charAt(i); 8 len += (STR.match(/^[a-zA-Z0-9!-/:-@¥[-`{-~]*$/)) ? 1:2; //半角ならば+1 9 if(len> maxlen){ 10 this.value.substr(0 ,20); 11 // string += STR[i]; 12 }; 13 console.log(len); 14 }; 15}; 16 17// コメントありがとうモーダル表示 18function c_done(){ 19 $("#done").modal(); 20}
回答2件
あなたの回答
tips
プレビュー