6

私は週末中ずっとこの問題の解決策を探していましたが、正しく機能する解決策をまだ見つけていません。私が達成しようとしているのは、テキストエリアの1行あたりの文字数を制限することです。同じように制限するのではなく、選択した1行あたりの文字数を変更します。

例えば:

  1. テキストエリアに4行だけにしたい
  2. 1、2、3行目は24文字に制限されます
  3. 4行目は無制限の文字数になります

これはtextareaで可能ですか、それともDivなどでiを実行する別の方法がありますか。これはおそらく以前にカバーされたことがあると思いますが、この基準をカバーする実際の作業スクリプトを見つけることは非常に困難であり、これらの結果を達成するために必要なスキルがありません。

ありがとう

4

1 に答える 1

6

以下は、解決しようとしている問題のサンプルスナップショットです。

  • textareaの4行(これをtextarea自体にrows = "4"で制限します)
  • 1、2、3行目は24文字に制限されています
  • 4行目は無制限の文字数になります

テキストエリアのスナップショット:

123456789012345678901234
123456789012345678902333
232323232323232323323232
23232323232323232323236464536543654643

JavaScript:

$('#your-input').keypress(function() {
     var text = $(this).val();
     var arr = text.split("\n");

     if(arr.length > 5) {
         alert("You've exceeded the 4 line limit!");
         event.preventDefault(); // prevent characters from appearing
     } else {
         for(var i = 0; i < arr.length; i++) {
             if(arr[i].length > 24 && i < 3) {
                 alert("Length exceeded in line 1, 2, or 3!");
                 event.preventDefault(); // prevent characters from appearing
             }
         }
     }

     console.log(arr.length + " : " + JSON.stringify(arr));
});

これは、keypressイベントを使用して実行できます。keypressイベントが発生したら、テキストボックスの現在の値を取得し、\n改行文字を区切り文字として使用して値を配列に分割します。

  • 配列の長さは、行数を示します。これらの行を超えた場合、アラートが発生します。
  • 配列内の個々の文字列の長さは、各行の長さを表します。forループを使用して、最初の3行をチェックします。24の長さを超えると、アラートが発生します。
  • 最後の行の長さは関係ないため、ループの最後の反復は無視します。

これは完全なソリューションとなるようには設計されていませんが、これにより確実に開始でき、ニーズに合わせて変更できるものが提供されます。幸運を!

于 2012-05-21T07:13:38.297 に答える