Javascript 按 "enter" 计算文本区域内的文本数量

Javascript to count number of texts within textarea by "enter"

能否请您告知如何通过按 "enter" 来计算文本区域内的文本数量。

文本区域可以这样创建:

 <textarea name="ta1" id="ta1" rows="4" cols="50">
 ABC[enter]
 DEF[enter]
 GHI[enter]
 </textarea>
 <input type="text" name="textnumber" value="">

然后"textnumber"会瞬间显示“3”。谢谢

这个问题之前有人问过(see here)。

您可以使用 Regex 查找字符串中换行符的数量。 要匹配的模式是:/\n/g,这意味着换行符出现的次数

参见this

要计算文本区域中的换行符数量,您必须:

  • 获取textarea的值var val = document.querySelector('textarea').value

  • 然后计数\n(换行)var res = val.match(/\n/g).length

要绑定结果并使其在您的输入中可视化,您可以将此过程包装在一个函数中,以便在每次文本区域更新时调用,

试试这个:

var tarea = document.querySelector('textarea')
var input = document.querySelector('input')

function update() {
  var res = (tarea.value.match(/\n/g)) ? tarea.value.match(/\n/g).length : 0;
  //                 ^^^^^^
  //          this is a ternary (like a conditional check)
  input.value = res;
}

tarea.addEventListener('input', update)
<textarea name="ta1" id="ta1" rows="4" cols="50">
  ABC DEF GHI
</textarea>
<input type="text" name="textnumber" value="0">

尝试这样做

function getEntersCount(textarea, result) {
   var text = textarea.value,
       enters = text.split(/\r|\r\n|\n/),
       count = enters.length;

   result.value = count;
}

getEntersCount(
    document.getElementById("ta1"), 
    document.querySelector('[name="textnumber"]')
);

我想这会对你有所帮助

编辑 1

getEntersCount(
    document.getElementById("ta1"), 
    document.getElementById('textnumber')
);

编辑 2

// Function will take text and return count of lines in it
function getEntersCount(text) {
    var enters = text.split(/\r|\r\n|\n/),
        count = enters.length;       
    return count;
}

// Usage example
var count = getEntersCount(document.getElementById("ta1").value) 
console.log(count);