在 javascript 中计算回车符

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。

我该如何实现这一要求?


为什么要使用eval?请不要使用eval。 - Alex Wayne
谢谢你提醒我!我雇了个人来为我建站,现在我正在修改一些东西。你有其他代码片段的链接吗?这个 JavaScript 的水平超出了我的能力范围。 - Dabellator
这个问题超出了你的能力范围,因为它被过度设计了... 它使用了高级元编程功能,而简单明了的代码就足够了。小心雇用写JavaScript的人。他们可能对你没有任何好处。 - Alex Wayne
2个回答

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

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

只需按每个新行分割字符串,然后查看有多少行即可。


不确定这是否适合我。首先,我希望用户能够被通知他们已经使用了多少个字符。如果每行值150个字符,那么如果他们提前回车,差异需要从总数中减去。当他们达到最大值时,就不应该再输入任何内容了。 - Dabellator
1
你问如何计算换行符,这就是方法。如何防止基于每个按键运行的某些函数的输入是另一个问题。 - Alex Wayne

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接