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

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

仕事で、これまで一度も書いたことのないケースに遭遇しました。午後の半分をその作業に費やし、ついに書き上げました。とても達成感がありました。もちろん、これは 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 ES6 モジュールの詳細な説明

目次0. モジュールとは何か1.モジュールの読み込み1.1 方法1 1.2 方法2 2. 輸出と輸入...

JavaScript イベント ループのケース スタディ

js のイベント ループJavaScript はシングルスレッドなので、同じイベントで実行できるメソ...

Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル

1. Navicat for MySQL 15をダウンロードするhttps://www.navica...

最新の MySQL 5.7.23 のインストールと設定のグラフィックチュートリアル

2018 年の最新 MySQL 5.7 の詳細なインストールと設定は 4 つのステップに分かれており...

Ubuntu は、Mysql+Keepalived の高可用性実装 (デュアルアクティブ ホットスタンバイ) を構築します。

Mysql5.5 デュアルマシン ホットスタンバイ実装 2つのMySQLをインストールするMySQ...

Vue+Echart 棒グラフで疫病データ統計を実現

目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...

Linux 上の MYSQL 5.7 でルート パスワードを取得する際の問題 (テスト済み、利用可能)

目次1. --skip-grant-tables 経由で取得する1.1 my.conf を変更し、新...

React における useEffect と useLayoutEffect の違い

目次前提条件使用効果コミット前ミューテーション効果コミットミューテーション効果コミットレイアウト効果...

Reactプロジェクトで画像を導入するいくつかの方法

imgタグは画像を導入しますreactは実際にはjsリーダー関数を介してページをレンダリングするため...

SSHのssh-keygenコマンドの基本的な使い方の詳細な説明

SSH 公開鍵認証は、SSH 認証方式の 1 つです。 SSH パスワードフリーのログインは公開鍵認...

URLパラメータに基づくNginx転送

使用シナリオ:ジャンプ パスは、傍受された URL に応じて動的に構成する必要があります。これは、イ...

トップナビゲーションバーメニューを作成するためのHTML+CSS

ナビゲーションバーの作成:技術要件: CS HTMLタグ達成目的:ナビゲーションバーメニューの作成コ...

Angular のパフォーマンス最適化: サードパーティ コンポーネントと遅延読み込みテクノロジー

目次概要環境の準備プロジェクトのパフォーマンスに影響を与える要因遅延読み込みとは何ですか?プロジェク...

Linux ファイルシステムの説明: ext4 以降

今日は、ext3 や他の以前のファイル システムとの違いを含め、ext4 の歴史について説明します。...

XHTMLにおけるH1タグの位置について

最近、H1 については多くの議論が行われていますが (記事のコンテンツ ページ内)、おおよそ 2 つ...