【问题标题】:Count carriage returns in javascript在javascript中计算回车
【发布时间】:2026-02-20 10:10:02
【问题描述】:

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

(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?请不要我们评估。
  • 感谢您的提醒!我雇了一个人为我建立网站,现在我正在经历和改变事情。您是否有指向我应该使用的其他 sn-p 的链接?这个级别的 javascript 超出了我的想象。
  • 它在你的头上,因为它的 方式 过度设计......它使用了高级元编程功能,而简单的简单代码可以做得很好。小心你聘请谁为你编写 JavaScript。他们可能对你没有任何帮助。

标签: javascript


【解决方案1】:
var string = "foo\nbar\nbaz";
console.log(string);
// foo
// bar
// baz

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

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

【讨论】:

  • 不确定这是否对我有用。首先,我希望通知用户他们已用完的字符。如果每行值 150 个字符,如果他们提前回车,则需要从总数中减去差额。当它们达到最大值时,不应允许它们进一步输入任何内容。
  • 你问如何计算新行数,这就是方法。如何根据您在每次击键时运行的某些功能来防止输入是另一个问题。
【解决方案2】:

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

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

【讨论】: