あなたが解決しようとしている問題のサンプルのスナップショットである:(行=「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を超えると、警告を発します。
- 最後の行の長さには関係しないので、ループの最後の繰り返しは無視されます。
これは完全な解決策ではありませんが、これは間違いなく開始され、ニーズに合わせて変更できるものを提供します。がんばろう!
もし可能であれば、頼むなら。何を試しましたか? – Joseph
あなたは何の影響を受けようとしていますか? 4つの入力を使用して接続する必要がない場合は、必要に応じてそれらを制限することができます。あなたはおそらく1つのように見えるCSS 4の入力で偽造することができ、より良い解決策のように思えます。 – Ryan
改行で分割して文字数を検出することができます。しかし問題は、フォントサイズや文字間隔などによって決まる「行」を制御することができないことです。特定のOSの1台のマシン上の1行は、別のOSを持つ別のマシンの1行と異なる場合があります。 Ryanの例が良いアイデアです。 –