【问题标题】:count characters in textarea in specific line计算特定行中textarea中的字符
【发布时间】:2012-09-23 17:49:46
【问题描述】:

如何读取特定行中的总字符数?

我希望用户只在 textarea 中输入 75 个字符,只有 5 行,这意味着用户只能使用 5 个输入或返回,在 5 个输入或返回后他将无法输入更多字符。所以一行 15 个字符。

我可以使用以下代码获取当前行号,如何计算该行 onkeypress 中的总字符数?

function getLineNumber()
{
    var t = $("#textareaId")[0];
    console.log(t.value.substr(0, t.selectionStart).split("\n").length);
}​

【问题讨论】:

  • 你为什么不检查总长度不大于75?!
  • 如果每行十五个字符,而你有五行...为什么不使用<input type="text" maxlength="15" /> * 5?
  • 如果用户按 6 输入字符然后我的设计将在 html 中受到干扰,所以我需要限制用户只允许 5 输入
  • maxlength="15" 不适用于所有浏览器
  • 如果这是一个设计问题,你可能应该重新考虑你的策略......想想那些在浏览器中手动放大字体的人,因为他们无法阅读小写字母......甚至 3那里的线条可能是个问题

标签: javascript jquery html textarea


【解决方案1】:

这是jsFiddle,这是代码:

function getLineNumber()
{
    var t = $("#textareaId")[0];
    var lineIndex = t.value.substr(0, t.selectionStart).split("\n").length-1;

    //alert the characters in line
    alert(t.value.substr(0, t.selectionStart).split("\n")[lineIndex].length);
}

$("#textareaId").keypress(function() {
  getLineNumber();
});

另一种方法是在这个更新的jsfiddle1

function getLineNumber()
{
    var t = $("#textareaId").val().split("\n");
    var lineIndex = (t.length)-1
    alert(t[lineIndex].length);
}

$("#textareaId").keypress(function() {
  getLineNumber();
});

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    也许你可以添加一点 CSS 来解决你的问题?

    选项a:无滚动条,文本区域扩展:

    textarea {
    overflow:auto;
    }
    

    选项 b:没有滚动条,文本区域保持不变:

    textarea {
    overflow:hidden;
    }
    

    这有帮助吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多