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


91

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

      1234
      4321
     123445

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

      1234,
      987l;

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


2
我不是100%肯定(因此发表评论),但可能涉及在每个“ \ n”处分割文本
Pluckerpluck 2012年

Answers:


180

试试这个。

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
}

14
而不是使用$('textarea').val()使用document.getElementById('textareaId').innerHTML多数民众赞成在它。
ShankarSangoli 2012年

3
我记得我们曾经使用过另一种方法。我们使用了form.elementname之类的东西。我的意思是很久以前。6-7年前DOM还很新时
SoWhat 2012年

是的,您甚至可以使用document.formname.textareName.value进行访问
ShankarSangoli,2012年

3
是否保证行以\ n结尾而不是\ r \ n?
Oztaco-恢复莫妮卡C。18年

对于2020年在这里的人,我无法确定添加上述注释时浏览器的行为,但目前Chrome无法识别document.getElementById('textarea')。innerHTML,除非该HTML已作为占位符文本加载在DOM的原始负载中。您将需要使用document.getElementById('textarea')。value来访问用户输入或修改的任何文本。在页面加载时,占位符文本作为内部HTML放在<textarea> </ textarea>标记之间,但是在用户添加输入时不会对其进行修改。
埃里克·巴克

37

这不需要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

5

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

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

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

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])
}

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])
}

旁注,如果您愿意,则每个样本循环为

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

4

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

/\s*\d+\s*\n/g.test(text) ? "OK" : "KO"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.