2012-02-28 5 views
0

텍스트 영역이 있습니다. 나는 내 의견을 수렴 할 것이다.Javascript/Jquery 문자열에서 num 행 가져 오기

내 간단한 countLines 함수는 다른 모든 정규식과 작동하지만이 경우는 작동하지 않습니다.

function countLines(str){ 
    return (str.split("\r\n|\r|\n").length -1); 
} 

alert(countLines($("#myTextArea").html()); 

왜 여러 줄의 텍스트가 있어도 반환 값이 0입니까?

답변

1

정규식 양식이 필요합니다.

function countLines(str){ 
    return (str.split(/\r?\n|\r/).length); 
} 
2

문자열을 .split() 대신 정규식으로 전달합니다. 정규식을 구분하려면 슬래시 (따옴표 제외)를 사용하십시오 : /\r\n|\r|\n/.

function countLines(str){ 
    return (str.split(/\r\n|\r|\n/).length -1); 
} 

그러나 텍스트 영역이 비어있는 경우 길이에서 1을 빼는 것이 정확합니다. 당신의 텍스트 영역에 포함 된 경우 :

 
line 1 
line 2 

하나의 \n있을 것입니다. .split()을 호출하면 두 항목 배열이 반환되고 countLines()은 실제로 두 줄이있을 때 1을 반환합니다. 맞습니까?

+1

'.html()'은 사용자 입력을 반환하지 않으므로'.val()'을 사용해야한다는 것에 유의하십시오. 다음은 텍스트 영역에서'.html()'과'.val()'사용의 차이점을 보여주는 간단한 데모입니다 : http://jsfiddle.net/YZVP6/ – Jasper

+0

내 텍스트 영역은 HTML 편집기처럼 사용됩니다. ;) – Danilo

2

스플릿을 사용하지 마십시오. 아마 DOM 요소로 작업 할 것이기 때문에 여기에 더 좋은 방법이 있습니다. 아래의 예는 "pre"요소의 코드 행을 계산합니다. 원하는 모든 선택자를 "pre"로 대체하십시오. 즐겨.

var count = $('pre').text().match(/\r?\n|\r/mg).length;