javascript - 文本区域的最大行数

标签 javascript textarea

我发现了一些限制文本区域中使用的行的脚本,如下所示:

 $(document).ready(function(){

        var lines = 10;
        var linesUsed = $('#linesUsed');
        var newLines=0;

        $('#rev').keydown(function(e) {

            newLines = $(this).val().split("\n").length;
            linesUsed.text(newLines);

            if(e.keyCode == 13 && newLines >= lines) {
                linesUsed.css('color', 'red');
                return false;
            }
            else {
                linesUsed.css('color', '');
            } 
        }); 

当您按下回车并将其限制为 10 时,它工作正常。但是当您键入太长的句子时,它们会自动转到没有\n 的新行,并且当您复制粘贴文本时,它会失败限制使用的线路。

有谁知道如何解决这个问题。

重要:解决方案需要适用于文本区域

最佳答案

你可以尝试使用这个逻辑来做:

JS:

var limit = 3; // <---max no of lines you want in textarea
var textarea = document.getElementById("splitLines");
var spaces = textarea.getAttribute("cols");

textarea.onkeyup = function() {
   var lines = textarea.value.split("\n");

   for (var i = 0; i < lines.length; i++) 
   {
         if (lines[i].length <= spaces) continue;
         var j = 0;

        var space = spaces;

        while (j++ <= spaces) 
        {
           if (lines[i].charAt(j) === " ") space = j;  
        }
    lines[i + 1] = lines[i].substring(space + 1) + (lines[i + 1] || "");
    lines[i] = lines[i].substring(0, space);
  }
    if(lines.length>limit)
    {
        textarea.style.color = 'red';
        setTimeout(function(){
            textarea.style.color = '';
        },500);
    }    
   textarea.value = lines.slice(0, limit).join("\n");
};

这是 UPDATED DEMO

关于javascript - 文本区域的最大行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22731394/

相关文章:

javascript - 对象如何等于空字符串?

javascript - 在 Dygraph.js 中隐藏标签

jquery - 如何在文本区域中禁用文本

extjs - 是否可以在 'width: 100%' 元素上使用 Ext.Ressized?

javascript - textarea 命名难题 - 使用 php 和 javascript

JavaScript 函数未触发

javascript - 全栈 JavaScript 框架是在客户端还是服务器上创建 HTML?

javascript - 如何减少 JavaScript 中的 if 语句检查

javascript - Angular 文本区域验证错误

html - textarea 应该调整它的大小