3

我正在运行以下代码来设置文本区域中的字符限制:

(function($){ 
 $.fn.extend({  
     limit: function(limit,element) {

        var interval, f;
        var self = $(this);

        $(this).focus(function(){
            interval = window.setInterval(substring,100);
        });

        $(this).blur(function(){
            clearInterval(interval);
            substring();
        });

        substringFunction = "function substring(){ var val = $(self).val();var length = val.length + carriages;if(length > limit){$(self).val($(self).val().substring(0,limit));}";
        if(typeof element != 'undefined')
            substringFunction += "if($(element).html() != limit-length){$(element).html((limit-length<=0)?'0':limit-length);}"

        substringFunction += "}";

        eval(substringFunction);



        substring();

    } 
}); 
})(jQuery);

我的用户输入文本的区域最多可容纳 1500 个字符。问题是它最多只能容纳 10 行。如果他们在输入回车之前在一行中输入 25 个字符,则字符总数需要为 150,而不是 26。

我怎样才能做到这一点?

4

2 回答 2

7
var string = "foo\nbar\nbaz";
console.log(string);
// foo
// bar
// baz

var lines = string.split(/\n/).length;

只需将字符串按每个新行拆分,然后查看您有多少行。

于 2013-07-28T22:09:14.483 回答
0

另一种使用正则表达式的解决方案总是非常有效。请注意,此解决方案计算回车,而不是行

const string = "foo\nbar\nbaz";
const lines = (string.match(/\n/g) || []).length;
console.log(lines);

于 2020-10-10T11:48:48.310 回答