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

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

仕事で、これまで一度も書いたことのないケースに遭遇しました。午後の半分をその作業に費やし、ついに書き上げました。とても達成感がありました。もちろん、これは 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) で定義されたインライン スタイルを削除する方法

推薦する

axiosのシンプルなカプセル化と使用例コード

序文最近、プロジェクトを構築しているときに、リクエストのカプセル化について考え、どのようにカプセル化...

Nodejs 配列キューと forEach アプリケーションの詳細な説明

この記事では、Nodejs 開発プロセスで遭遇する配列の特性によって発生する問題と解決策、および配列...

jsは画像切り取り機能を実現する

この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体...

docker+gitlab+gitlab-runnerの詳細なデプロイメント

環境サーバー: centos7クライアント: ウィンドウCentos7 に docker+gitla...

Nginx で limit_req_zone を使用して同じ IP へのアクセスを制限する方法

Nginx は、ngx_http_limit_req_module モジュールの limit_req...

nginx のロケーションと書き換えの使用法の詳細な説明

1. 位置情報の利用状況の概要ロケーションは、さまざまな処理方法に対してさまざまな種類のリクエストを...

MySQLにおける正規表現の一般的な使用法

MySQL における Regexp の一般的な使用法特定の文字列を含むあいまい一致# コンテンツフィ...

CentOS での MySQL ログイン 1045 問題を解決する

アプリケーション全体を CentOS にデプロイする必要があるため、当然ながらデータベース操作は不可...

vue-router のハッシュモードと履歴モードの違い

vue-routerには2つのモードがありますハッシュモード履歴モード1. シングルページアプリケー...

HTML リスト タグ dl、ul、ol の使用例

コードをコピーコードは次のとおりです。 <!--リストタグ: <dl>: 階層リス...

Docker Composeオーケストレーションツールの詳細な説明

Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...

反応ルーティングでパラメータを渡すいくつかの方法についての簡単な説明

最初のパラメータ渡し方法は、動的ルーティングパラメータ渡しです。リンクのパス属性を設定することで、ル...

Ubuntu ブート自動起動サービス設定

Ubuntu でサービスを作成し、自動的に起動する方法: 1. [/lib/systemd/syst...

vue-cli を使用してプロジェクトを作成し、webpack でパッケージ化する方法

1. 環境を準備する(Node.jsをダウンロードし、環境変数を設定する) 2. vue-cliをグ...

HTML で Flash を読み込む方法 (2 つの実装方法)

最初の方法: CSSコード:コードをコピーコードは次のとおりです。 .b970-a{幅:970px;...