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

Sau*_*mar 73 html javascript jquery textarea

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

      1234
      4321
     123445
Run Code Online (Sandbox Code Playgroud)

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

      1234,
      987l;
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*oli 153

试试这个.

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
}
Run Code Online (Sandbox Code Playgroud)

  • 而不是使用`$('textarea').val()`使用`document.getElementById('textareaId').innerHTML`就是这样. (13认同)
  • 我记得我们使用过另一种方法.我们使用了form.elementname或者其他东西.我的意思是好久不见了.6到7年前,DOM很新 (3认同)
  • 是否保证行以\ n结尾而不是\ r \ n? (3认同)
  • 对于那些在 2020 年来到这里的人,我无法确定添加上述注释时浏览器的行为是什么,但目前 Chrome 无法识别 document.getElementById('textarea').innerHTML 除非它已经作为占位符文本加载在 DOM 的原始加载中。您需要使用 document.getElementById('textarea').value 来访问用户输入或修改的任何文本。页面加载时,占位符文本作为内部 HTML 放置在 &lt;textarea&gt;&lt;/textarea&gt; 标记之间,但当用户添加输入时不会修改。 (2认同)

Pau*_*ski 33

这不需要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
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 5

这将为您提供中的所有有效数值lines。您可以更改循环以进行验证,删除无效字符等-随便哪个。

var lines = [];
$('#my_textarea_selector').val().split("\n").each(function ()
{
    if (parseInt($(this) != 'NaN')
        lines[] = parseInt($(this));
}
Run Code Online (Sandbox Code Playgroud)

  • 作为一般说明,您几乎总是想将第二个参数传递给parseInt,以强制以10为底数/十进制(`parseInt(this,10)`)。否则,前导零会导致解释为基数8(八进制),这可能会导致某些相当奇怪的行为... (3认同)

whi*_*and 5

两个选项:不需要 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])
}
Run Code Online (Sandbox Code Playgroud)

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])
}
Run Code Online (Sandbox Code Playgroud)

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

lines.forEach(function(line) {
  console.log('Line is ' + line)
})
Run Code Online (Sandbox Code Playgroud)