テキストエリアの残りの単語数を動的に取得する方法

テキストエリアの残りの単語数を動的に取得する方法

仕事で、これまで一度も書いたことのないケースに遭遇しました。午後の半分をその作業に費やし、ついに書き上げました。とても達成感がありました。もちろん、これは JS の専門家にとっては何でもないことですが、私自身の JS 能力にとっては小さな前進です。

事例紹介: 一部の Web サイトにはテキストエリア テキスト ボックスがよくあります。入力すると、下にテキスト プロンプトが表示され、あと何語入力できるかが表示されます。今日はこの機能を実装します。もちろん、ページには複数のテキストエリアがあるため、単一の js ロジックを使用してそれらを制御することはできないため、少しカプセル化する必要があります。もちろん、私のカプセル化にはまだいくつかの欠落がありますが、基本的な機能は実現されています。

まず、単一のテキストエリアの実装例を紹介しましょう。

HTML部分:

XML/HTML コードコンテンツをクリップボードにコピー
  1. <テキストエリア  id = "text_txt1" > </テキストエリア>   
  2. <スパン  id = "num_txt1" >残り 600 文字</ span >   

js部分:

JavaScriptコードコンテンツをクリップボードにコピー
  1. $(関数() {
  2. $( '#text_txt1' ).on( 'keyup' ,関数(){
  3.         var txtval = $( '#text_txt1' ).val().length;
  4. コンソールログ(txtv​​al);
  5.        var str = parseInt(600-txtval);
  6. コンソールログ(str);
  7.          (文字列>0)の場合{
  8. $( '#num_txt1' ).html( '残りは' +str+ '文字を入力できます' );
  9. }それ以外{
  10. $( '#num_txt1' ).html( '残り0文字' );
  11. $( '#text_txt1' ).val($( '#text_txt1' ).val().substring(0,600)); //これは、内部のテキストが 0 以下の場合、単語数を増やすことができず、600 語までしか増やせないことを意味します。   
  12. }
  13.          //console.log($('#num_txt').html(str));   
  14. });
  15. })

次に、同じページに複数のテキストエリアを配置する実装例を紹介します。

JavaScriptコードコンテンツをクリップボードにコピー
  1. 関数changeLength(obj,num){
  2. obj.on( 'keyup' ,関数(){
  3.      var txtval = obj.val().length;
  4.          //コンソール.log(txtv​​al);   
  5.          var str = parseInt(600-txtval);
  6.          // コンソールログ(str);   
  7.          (文字列>0)の場合{
  8. num.html( '残りの入力' +str+ '単語数' );
  9. }それ以外{
  10. num.html( '残り0文字' );
  11. obj.val(obj.val().substring(0, 600));
  12. }
  13.          //console.log($('#num_txt').html(str));   
  14. });
  15. }
  16. $( function (){ // ここには4つあるので4回呼び出します  
  17. 長さを変更します($( '#text_txt1' ),$( '#num_txt1' ));
  18. 長さを変更します($( '#text_txt2' ),$( '#num_txt2' ));
  19. 長さを変更します($( '#text_txt3' ),$( '#num_txt3' ));
  20. 長さを変更します($( '#text_txt4' ),$( '#num_txt4' ));
  21. });

もちろん、ここで実際に必要な単語の数も関数内にカプセル化できますが、ここではそうしません。このように、テキストを入力すると、スパン内に残りの単語数が自動的に表示されます。入力値が最大値に達すると、残りの単語数は 0 と表示され、新しいコンテンツを入力することができなくなります。テキストを削除する場合、span は残りの単語数を動的に取得できます。

以下は他の人のコードです。今回も書き方を少し拝借しました。

html:

XML/HTML コードコンテンツをクリップボードにコピー
  1. < div  クラス= "family_v2" >   
  2.      < 10 ...   class = "nickname_v2" >はじめに: </ p >   
  3.       <テキストエリア  id = "コンテンツ"  名前= "サイン"  スタイル= "高さ:60px;オーバーフロー-y:hidden;"   
  4.       onkeyup = "changeLength(this,60)"  クラス= "ニックネームボックス_v2 ブリーフボックス_v2" >   
  5.       </テキストエリア>   
  6.       < div  クラス= "limit_num_v2" >   
  7.           < h3 > 60 </ h3 >   
  8.      </div>   
  9.   </div>   

js:

JavaScriptコードコンテンツをクリップボードにコピー
  1. //テキストエリアの長さを確認する  
  2. 関数changeLength(obj,lg){
  3.      var len = $(obj).val();
  4. $(obj).next().find( "h3" ).text(lg-len.length);
  5.      (len.length>=lg)の場合{
  6. $(obj).next().find( "h3" ).text(0);
  7. $(obj).val(len.substring(0,lg));
  8. }
  9. }

テキストエリアの残りの単語数を動的に取得する方法に関する上記の記事は、エディターがあなたと共有するすべてのコンテンツです。これが参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

<<:  JavaScript で動的な QML オブジェクトを作成する方法

>>:  スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

推薦する

JavaScript ベースのパスワード ボックス検証情報の実装

この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...

Dockerコンテナが外部ネットワークにpingできない問題を解決する

今日、docker で redis 環境を構築していたところ、yum がリソースを取得できず、インタ...

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

html リンク タグ タイトル属性 改行 マウス ホバー プロンプト コンテンツ 改行効果

オブジェクト上にマウスを移動したときにコンテンツ(タイトル属性の内容)を折り返す方法、HTML タイ...

MySQL チュートリアル データ定義言語 DDL の例 詳細な説明

目次1. SQL言語の基本機能の紹介2. データ定義言語の目的3. データベースの作成と破棄4. デ...

Windows システムで MySQL が起動しない場合の一般的な解決策

MySQL 起動エラーWindows 10 に MySQL をインストールする前は、net star...

Linuxのファイル権限の詳細な紹介

Linux の優れた点は、マルチユーザー、マルチタスク システムにあります。 Linux では通常、...

CSS3 の Flex レイアウトの詳細な分析

Flexbox レイアウト モジュールは、コンテナー内のスペースをより効率的に配分する方法を提供する...

Antdesign-vueとsortablejsを組み合わせて、2つのテーブルをドラッグして並べ替える機能を実現

目次成果を達成するsortablejs の紹介具体的な実装成果を達成する最初は、antdesign ...

Windowsにmysql5.7をインストールする方法

まずmysqlの圧縮バージョンをダウンロードします。公式ダウンロードアドレスは123WORDPRES...

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...

jsのディープコピーを理解しましょう

目次js ディープコピーデータ保存方法浅いコピー/深いコピーとは何か一般的なディープコピーの実装1....

IE5.0以降のHTCコンポーネントの定義の概要

Microsoft IE 5.0 がリリースされる前は、Web プログラミングにおける最大の課題は、...

ES6 Promiseの使い方の詳細な説明

目次約束とは何ですか?拒否の使用法キャッチの使い方すべての使用法レースの使用約束とは何ですか? Pr...

要素の読み込み効果を実現するための純粋なHTML+CSS

これは Element UI の読み込みコンポーネントのエフェクトです。かっこいいですね。実装してみ...