Javascript 在textarea中将换行符作为maxlength的一部分的最佳方式是什么

Javascript 在textarea中将换行符作为maxlength的一部分的最佳方式是什么,javascript,jquery,html,textarea,line-breaks,Javascript,Jquery,Html,Textarea,Line Breaks,似乎换行符并没有被算作textarea中设置的maxlength的一部分,这会在发布到数据库时导致错误。我试图像这样添加验证,但当用户在textarea中复制粘贴值时,它无法捕获。有人能给我建议吗 $("textarea.objective").on("keydown keyup", function(e) { var x = $(this).val() var newLines = x.match(/(\r\n|\n|\r)/g); var ad

似乎换行符并没有被算作textarea中设置的maxlength的一部分,这会在发布到数据库时导致错误。我试图像这样添加验证,但当用户在textarea中复制粘贴值时,它无法捕获。有人能给我建议吗

$("textarea.objective").on("keydown keyup", function(e) {
        var x = $(this).val()
        var newLines = x.match(/(\r\n|\n|\r)/g);
        var addition = 0;
        if (newLines != null) {
            addition = newLines.length;
        }
        var maxLength = parseInt($(this).attr("maxlength")) ;
        if (maxLength <= $(this).val().length + addition
                 && e.keyCode !== 46 
                    && e.keyCode !== 8) {
             e.preventDefault();
            $(this).css('background-color', '#ffe8f3');
        } else {
            $(this).css('background-color', '#fff');
        }
    });
$(“textarea.objective”)。打开(“按键向下键向上”,函数(e){
var x=$(this.val()
var newLines=x.match(/(\r\n |\n |\r)/g);
var加法=0;
if(换行符!=null){
加法=换行。长度;
}
var maxLength=parseInt($(this).attr(“maxLength”);

if(maxLength)Add onChange hook来解决它。比如:
$(“textarea.objective”)。在(“keydown-keyup-change”,函数(e){
上,而不是使用
key
事件,尝试使用
$(…)。在('input;,function(){…})
上,这个.value.length
对我来说包括换行符。这是jQuery中的一个错误,:“注意:目前,使用.val()在元素上,从浏览器报告的值中删除回车字符。但是,当通过XHR将此值发送到服务器时,会保留回车字符(或由未将回车字符包含在原始值中的浏览器添加)。可以使用valHook解决此问题,如下所示: