6

我整个周末都在寻找这个难题的解决方案,但还没有找到一个可以正常工作的解决方案。我想要实现的是限制文本区域中每行的字符数 - 不是相同地限制它们,而是我选择的每行字符数不同。

例如:

  1. 我只想在我的文本区域中有 4 行
  2. 第 1,2 和 3 行将限制为 24 个字符
  3. 第 4 行将有无限数量的字符

这是否可以使用 textarea,或者是否有另一种方法可以使用 Div 或其他方式进行 i 操作。我确实意识到以前很可能已经涵盖了这一点,但是要找到涵盖该标准的实际工作脚本已被证明是极其困难的,而且我没有获得这些结果所需的那种技能。

谢谢

4

1 回答 1

6

以下是您尝试解决的问题的示例快照:

  • textarea 中的 4 行(将其限制在 textarea 本身,rows="4")
  • 第 1、2 和 3 行限制为 24 个字符
  • 第 4 行将有无限数量的字符

文本区域的快照:

123456789012345678901234
123456789012345678902333
232323232323232323323232
23232323232323232323236464536543654643

JavaScript:

$('#your-input').keypress(function() {
     var text = $(this).val();
     var arr = text.split("\n");

     if(arr.length > 5) {
         alert("You've exceeded the 4 line limit!");
         event.preventDefault(); // prevent characters from appearing
     } else {
         for(var i = 0; i < arr.length; i++) {
             if(arr[i].length > 24 && i < 3) {
                 alert("Length exceeded in line 1, 2, or 3!");
                 event.preventDefault(); // prevent characters from appearing
             }
         }
     }

     console.log(arr.length + " : " + JSON.stringify(arr));
});

这可以使用按键事件来完成。\n当 keypress 事件触发时,获取文本框的当前值并使用换行符作为分隔符将值拆分为数组。

  • 数组的长度告诉你你有多少行。如果您超出了这些界限,我们会发出警报。
  • 数组中每个单独字符串的长度表示每一行的长度。我们使用 for 循环来检查前 3 行。如果我们超过 24 的长度,我们会发出警报。
  • 我们忽略了循环的最后一次迭代,因为我们不关心最后一行的长度。

这不是一个完整的解决方案,但这肯定会让您开始并为您提供一些您可以修改以满足您的需求的东西。祝你好运!

于 2012-05-21T07:13:38.297 回答