textareaの動的な残り単語を取得するメソッドの実装方法
2022-01-26 02:15:41
仕事で今まで書いたことのないケースに遭遇し、午後半日かけてかじりつくように書き出したら、見事に達成!。もちろんjsイジメにはたいしたことないけど、自分のjsの実力としては小さな一歩です。
事例を紹介します。テキストエリアのテキストボックスがあるウェブサイトをよく見かけますが、文字を入力すると、下にあと何文字入力できるかを示すテキストが表示されます。もちろん、1つのページに複数のテキストエリアがあるので、1つのjsロジックで制御することは不可能なので、少しカプセル化する必要がある。もちろん、私のラッパーはまだ欠けていますが、基本的な機能は達成されています。
まず、textareaの実装例を一つ挙げてみましょう。
htmlセクションです。
XML/HTMLコード
内容をクリップボードにコピーする
- <スパン < テキストエリア イド = <スパン "text_txt1"。 > <スパン </ テキストエリア >
- <スパン <スパン < スパン <スパン イド = <スパン num_txt1"。 > <スパン 応募残り600字 </ スパン <スパン >
jsセクションです。
JavaScriptコード
内容をクリップボードにコピーする
- $( 機能 (){
- $( '#text_txt1' ).on( 'キーアップ' , 機能 (){
- <スパン ヴァル txtval = $( '#text_txt1' ).val().length;
- console.log(txtval)を実行します。
- <スパン ヴァル str = parseInt(600-txtval);
- console.log(str)。
- もし (str > 0 ){。
- $( #num_txt1 ).html( 入力テーブルの残り +str+ 言葉 );
- } さもなくば {
- $( #num_txt1 ).html( 入力可能な文字数は残り0文字 );
- $( #テキスト_txt1 ).val($( #テキスト_txt1 ).val().substring(0,600)); // これは、中のテキストが0以下の場合、単語数を増やすことができず、600単語までしか増やせないことを意味する
- }
- //console.log($('#num_txt').html(str));
- });
- })
次に、同じページの下に複数のtextareaの実装がある例を紹介します。
JavaScriptコード
内容をクリップボードにコピーする
- 機能 changeLength(obj,num){。
- obj.on() キーアップ , 機能 (){
- ヴァル txtval = obj.val().length;
- //console.log(txtval);
- ヴァー str = parseInt(600-txtval);
- //console.log(str);
- <スパン もし (str > 0 ){。
- num.html( '残りの入力可能' +str+ <スパン 'ワード' );
- } その他 {
- num.html( '入力残り0ワード' );
- obj.val(obj.val().substring(0, 600));
- }
- //console.log($('#num_txt').html(str));
- });
- }
- $( 機能 (){ //ここに4つあるから、4回呼び出そう
- changeLength($( '#text_txt1' ),$( '#num_txt1' ));
- changeLength($( '#text_txt2' ),$( '#num_txt2' ));
- changeLength($( '#text_txt3' ),$( '#num_txt3' ));
- changeLength($( '#text_txt4' ),$( '#num_txt4' ));
- });
もちろんここで実際に要求された文字数は関数の中でラップすることも可能ですが、ここではしません。こうすることで、テキストが入力されると、自動的にスパン内に残り語数が表示され、最大値が入力されると残り語数が0になり、新しいコンテンツが入力できなくなる。テキストが削除されると、スパンは動的に残り単語数を取得します。
以下は、今回、多かれ少なかれ他の人から借りたコードです。
htmlを使用します。
XML/HTMLコード
内容をクリップボードにコピーする
- <スパン < ディブ クラス = "family_v2"。 > <スパン
- <スパン <スパン < p クラス = <スパン "nickname_v2"。 > <スパン はじめに <スパン </ p >
- <スパン <スパン < テキストエリア イド = "コンテンツ"。 名称 = <スパン "記号" <スパン スタイル = <スパン "height:60px;overflow-y: hidden;"。
- <スパン オンキーアップ = <スパン "changeLength(this,60)"。 クラス = "ニックネームBox_v2 brief_box_v2" >
- <スパン <スパン </ テキストエリア >
- <スパン <スパン < ディブ クラス = "limit_num_v2"。 > <スパン
- <スパン <スパン < h3 > 60 <スパン </ h3 >
- <スパン <スパン </ ディブ >
- <スパン <スパン </ ディブ >
js:
JavaScriptコード
内容をクリップボードにコピーする
- //textareaの長さを検証する
- <スパン 機能 changeLength(obj,lg){。
- <スパン ヴァル len = $(obj).val();
- $(obj).next().find() h3" ).text(lg-len.length);
- もし (len.length>=lg){。
- $(obj).next().find() h3" ).text(0);
- $(obj).val(len.substring(0,lg));
- }
- }
以上、textareaの残り単語を動的に取得する方法をお伝えしましたが、ご参考になれば幸いです。また、スクリプトホームを応援していただければ幸いです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン