2012-05-21 32 views
5

このquandryの解決方法については、すべての週末を検索していますが、正しく動作する解決策をまだ見つけていません。私が成し遂げようとしているのは、テキストエリア内の行ごとのチャーターの数を制限することです。それらを同じに制限するのではなく、選択した行ごとに異なる数の文字を制限します。例についてはテキストエリア内の1行あたりの文字数を制限する

:私は私のテキストエリアで唯一の4行

  • ライン1,2及び3は、24文字
  • 4行に制限されますがしたい

    1. は、無制限の数を持っています文字の

    これはテキストエリアで可能ですか、それともDivなどで他の方法を使用していますか?私はこれが以前からカバーされていた可能性があることを認識していますが、この基準をカバーする実際の作業スクリプトを見つけることは非常に困難であり、これらの結果を達成するために必要なスキルはありません。

    おかげ以下

  • +0

    もし可能であれば、頼むなら。何を試しましたか? – Joseph

    +0

    あなたは何の影響を受けようとしていますか? 4つの入力を使用して接続する必要がない場合は、必要に応じてそれらを制限することができます。あなたはおそらく1つのように見えるCSS 4の入力で偽造することができ、より良い解決策のように思えます。 – Ryan

    +0

    改行で分割して文字数を検出することができます。しかし問題は、フォントサイズや文字間隔などによって決まる「行」を制御することができないことです。特定のOSの1台のマシン上の1行は、別のOSを持つ別のマシンの1行と異なる場合があります。 Ryanの例が良いアイデアです。 –

    答えて

    6

    あなたが解決しようとしている問題のサンプルのスナップショットである:(行=「4」とテキストエリア自体にこれを制限)テキストエリア内

    • 4行
    • 行1、2、及び3文字の数に制限があります24文字
    • 線4に限定される
    テキストエリアの

    スナップショット:

    123456789
    123456789
    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イベントが発生すると、テキストボックスの現在の値を取得し、区切り文字として\nの改行文字を使用して値を配列に分割します。

    • 配列の長さは、使用している行の数を示します。これらの行を超えた場合は、警告を発します。
    • 配列内の各文字列の長さは、各行の長さを表します。最初の3行をチェックするためにforループを使用します。長さが24を超えると、警告を発します。
    • 最後の行の長さには関係しないので、ループの最後の繰り返しは無視されます。

    これは完全な解決策ではありませんが、これは間違いなく開始され、ニーズに合わせて変更できるものを提供します。がんばろう!

    +0

    私はかなり 'cols'制御幅で、行/高さではないと確信しています。 – Daedalus

    +0

    @Daedalus - ありがとう:)それはそれを夜と呼ぶのに近づいています:)固定! – jmort253

    +0

    ようこそ:)あなたがそこに着くとき、良い睡眠を持っている、 – Daedalus

    関連する問題