如何逐行读取文本区域 HTML 标记

IT技术 javascript jquery html textarea
2021-02-24 19:21:19

我有一个文本区域,其中每一行都包含整数值,如下所示

      1234
      4321
     123445

我想检查用户是否真的输入了有效值而不是一些有趣的值,如下所示

      1234,
      987l;

为此,我需要逐行阅读文本区域并进行验证。如何使用javascript逐行读取文本区域?

5个回答

试试这个。

var lines = $('textarea').val().split('\n');
for(var i = 0;i < lines.length;i++){
    //code here using lines[i] which will give you each line
}
是的,您甚至可以使用 document.formname.textareName.value 访问它
2021-04-20 19:21:19
而不是使用$('textarea').val()使用document.getElementById('textareaId').innerHTML它。
2021-04-25 19:21:19
我记得我们使用了另一种方法。我们使用了 form.elementname 之类的。我的意思是很久以前。6-7 年前,当 DOM 还很新的时候
2021-05-08 19:21:19
行是否保证以 \n 而不是 \r\n 结尾?
2021-05-09 19:21:19
对于那些在 2020 年来到这里的人,我无法确定添加上述评论时浏览器的行为是什么,但目前 Chrome 无法识别 document.getElementById('textarea').innerHTML,除非它已作为占位符文本加载在 DOM 的原始加载中。您需要使用 document.getElementById('textarea').value 来访问用户输入或修改的任何文本。在页面加载时,占位符文本作为内部 HTML 放置在 <textarea></textarea> 标记之间,但在用户添加输入时不会修改。
2021-05-09 19:21:19

这不需要 jQuery 就可以工作:

var textArea = document.getElementById("my-text-area");
var arrayOfLines = textArea.value.split("\n"); // arrayOfLines is array where every element is string of one line

这将为您提供lines. 您可以更改循环以验证、去除无效字符等 - 无论您想要什么。

var lines = [];
$('#my_textarea_selector').val().split("\n").each(function ()
{
    if (parseInt($(this) != 'NaN')
        lines[] = parseInt($(this));
}
作为一般说明,您几乎总是希望将第二个参数传递给 parseInt 以强制读取为基数 10/十进制 ( parseInt(this, 10))。否则,前导零会导致解释为基数 8(八进制),这可能会导致一些相当奇怪的行为......
2021-05-04 19:21:19

两个选项:不需要 JQuery,或 JQuery 版本

没有 JQuery(或任何其他需要的东西)

var textArea = document.getElementById('myTextAreaId');
var lines = textArea.value.split('\n');    // lines is an array of strings

// Loop through all lines
for (var j = 0; j < lines.length; j++) {
  console.log('Line ' + j + ' is ' + lines[j])
}

jQuery 版本

var lines = $('#myTextAreaId').val().split('\n');   // lines is an array of strings

// Loop through all lines
for (var j = 0; j < lines.length; j++) {
  console.log('Line ' + j + ' is ' + lines[j])
}

旁注,如果您更喜欢 forEach,则示例循环是

lines.forEach(function(line) {
  console.log('Line is ' + line)
})

一个简单的正则表达式应该可以有效地检查您的 textarea:

/\s*\d+\s*\n/g.test(text) ? "OK" : "KO"