這是well-documented不同的瀏覽器對文本區域中的換行符用maxlength來區別對待。例如,如果您使用換行符,則下面的代碼段在Chrome和Firefox中的行爲會有所不同。用換行符對文本區域maxlength進行特徵檢測
我的問題是,我需要允許用戶輸入換行符,我需要向他們顯示他們剩下的字符數。我可以檢測到他們的瀏覽器類型,但這很脆弱,並且是一種已知的反模式。有沒有辦法使用功能檢測來正確執行此操作?或者我還應該避免maxlength?請注意,我的問題不是jQuery特有的,爲了簡單起見,我僅在示例中使用了jQuery。請注意,我已經有一個沒有maxlength的解決方法的例子(見下文),但是它不能很好地跨越像你想避免使用jquery hack的ember這樣的框架。
MAXLENGTH問題(嘗試用火狐,Chrome和類型的至少一個換行符
$('.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>
沒有最大長度的解決方法(毛)
$('.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>
當你到10個字符,則無法使用回退了 – AlexMA
也不會阻止粘貼在一萬字。 – AlexMA
我使它儘可能簡單,不需要像'backspace','delete'等處理導航鍵。如果你想我可以將它添加到樣本中。同樣粘貼也不是問題,只要用同一個處理程序處理另一個事件來檢查maxLength。我是否也應該將它添加到樣本中? – xxxmatko