【问题标题】:javascript textarea character limit per linejavascript textarea 每行字符数限制
【发布时间】:2013-06-19 19:24:43
【问题描述】:

我有一个每行字符有限的文本区域。它的功能很好。

function limitRow(){
    var count = 1;
    var charsPerLine = row; // 30 characters  
    var maxLines = 20; 

    $('.AD_Text_textarea').keydown(function (e) {
        var v = $(this).val(),
        vl = v.replace(/(\r\n|\n|\r)/gm, '').length,
        lineCount = $(this).val().split("\n").length;

        if (parseInt(vl / count) >= charsPerLine) {
            if (lineCount >= maxLines) {
                return false;
            }
            $(this).val(v + "\n");
            count += 1;
        }
    });
}

我的问题是,如果我要去第 1 行,在输入例如 4 行文本并在光标位置 4 上输入一些文本后,行计数器会计算开头并在 60 个字符后换行并继续第 4 行结束。
我该如何解决这个问题? 我希望,这很清楚。 (对不起我的英语)

【问题讨论】:

  • 在我看来,最好的选择是忘记为响应击键而执行此操作,并在模糊时执行此操作。这样,您不仅可以避免跳跃问题,还允许用户通过“编辑”菜单或使用鼠标更改文本。 (顺便说一句,你的英语很好。)
  • 只需将$('.AD_Text_textarea').keydown() 更改为$('.AD_Text_textarea').blur() 即可遵循@nnnnnn 的[优秀] 建议。

标签: javascript


【解决方案1】:

试试这个

    var count = 1;
    var charsPerLine = 30; // 30 characters  
    var maxLines = 2;
    $('.AD_Text_textarea').keydown(function (e) {
        var this_input = $(this);
        var value = this_input.val().split('\n');

        if (value.length < maxLines) {
            if (value[parseInt(value.length) - 1].toString().length > charsPerLine) {
                alert(value.length.toString());
                this_input.val(this_input.val() + '\n');
            }

        }
        else {
            return false;
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多