텍스트 영역 HTML 태그의 한 줄씩 읽는 방법


92

각 줄에 다음과 같은 정수 값이 포함 된 텍스트 영역이 있습니다.

      1234
      4321
     123445

사용자가 다음과 같은 재미있는 값이 아닌 유효한 값을 실제로 변경했는지 확인하고 싶습니다.

      1234,
      987l;

이를 위해 텍스트 영역을 한 줄씩 읽고 유효성을 검사해야합니다. 자바 스크립트를 사용하여 텍스트 영역을 한 줄씩 읽을 수 있습니까?


2
100 % 확실하지는 않지만 (따라서 주석) "\ n"마다 텍스트를 분할해야 할 수 있습니다
Pluckerpluck 2012

답변:


181

이 시도.

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은 아주 새로운 때
그러길

예 당신도 document.formname.textareName.value 사용하여 액세스 할 수 있습니다
ShankarSangoli

3
줄이 \ r \ n이 아닌 \ n으로 끝나는 것이 보장됩니까?
Oztaco-Monica C 복원.

2020 년에 여기에있는 사람들을 위해 위의 주석이 추가되었을 때 브라우저 동작이 무엇인지 확신 할 수 없지만 현재 Chrome은 이미 자리 표시 자 텍스트로로드되지 않는 한 document.getElementById ( 'textarea'). innerHTML을 인식하지 못합니다. DOM의 원래로드에서. 사용자가 입력하거나 수정 한 모든 텍스트에 액세스하려면 document.getElementById ( 'textarea'). value를 사용해야합니다. 페이지로드시 자리 표시 자 텍스트는 <textarea> </ textarea> 태그 사이에 내부 HTML로 배치되지만 사용자가 입력을 추가 할 때 수정되지 않습니다.
Eric Barker

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)) 를 기준으로 읽도록 강제 합니다. 그렇지 않으면 선행 0은 8 진법 (8 진수)으로 해석되어 다소 이상한 동작을 유발할 수 있습니다 ...
IMSoP

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

참고 : forEach를 선호하는 경우 샘플 루프는

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

4

간단한 정규식이 텍스트 영역을 확인하는 데 효과적이어야합니다.

/\s*\d+\s*\n/g.test(text) ? "OK" : "KO"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.