【发布时间】:2016-08-24 14:08:28
【问题描述】:
well-documented 不同的浏览器在最大长度方面对文本区域中的换行符的处理方式不同。例如,如果您使用换行符,下面的 sn-p 在 Chrome 和 Firefox 中的行为会有所不同。
我的问题是我需要允许用户输入换行符,并且我需要向他们展示他们还剩下多少个字符。我可以检测到他们的浏览器类型,但这很脆弱并且是一种已知的反模式。有没有办法使用特征检测来正确地做到这一点?还是我仍然应该避免使用 maxlength?请注意,我的问题不是特定于 jQuery 的,我只是在示例中使用了 jQuery,以便简单地展示正在发生的事情。请注意,我已经有一个没有 maxlength 的解决方法示例(见下文),但它不能很好地跨框架(如您希望避免使用 jquery hack)的 ember 进行转换。
Maxlength 问题(尝试使用 Firefox、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>
没有 maxlength 解决方法(总)
$('.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>
【问题讨论】:
标签: javascript html