well-documented異なるブラウザでは、maxlengthに関して異なるテキスト領域の改行を扱います。たとえば、下のスニペットは、改行を使用する場合、ChromeとFirefoxの動作が異なります。改行でのテキスト領域maxlengthの機能検出
私の問題は、ユーザーが改行を入力できるようにする必要があり、残りの文字数を表示する必要があるということです。私はブラウザの種類を検出できますが、それは脆く、既知の反パターンです。これを正しく行うために機能の検出を使用する方法はありますか?それとも、私はまだ最大長を避けるべきですか?私の質問はjQuery特有の問題ではないことに注意してください。単純化のためにjQueryを使用しました。 maxlengthのない回避策の例がありますが(下記参照)、jqueryハックの使用を避けたいemberのようなフレームワークではうまく翻訳されません。
MAXLENGTHの問題(MAXLENGTH回避策がなければ少なくとも一つの改行
$('.t').on('input',function(){
$('.x').html($('.t').val().length);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="t" rows=3 maxlength=10></textarea>
<br>
chars typed: <span class="x"></span>
(総額のFirefox、Chromeでみてください、と入力します)
$('.t').on('input', function(){
let maxLength = 10;
let val = $('.t').val();
$('.t').val((val && val.length) ? val.substring(0,maxLength) : val);
$('.x').html($('.t').val().length);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="t" rows=3></textarea>
Chars typed: <span class='x'></span>
、あなたは万字に貼り付けを防ぐことはできません。また、もう – AlexMA
をバックスペースを使用することはできません。 – AlexMA
「backspace」、「delete」などのナビゲーションキーを処理せずに、できるだけシンプルにしました。必要に応じてサンプルに追加できます。また、貼り付けは問題ではなく、maxLengthをチェックする同じハンドラで別のイベントを処理するだけです。サンプルにも追加する必要がありますか? – xxxmatko