2011-05-14 4 views
24

br /> 또는 다른 언어로 줄 바꾸기를 유지하는 데는 많은 스레드가 있지만 텍스트 영역과 관련하여 많은 부분이 없습니다.변환 될 Textarea의 새 줄 <br/>

var boxText = ""; 
$("textarea.BoxText").live('dblclick', function() { 
    boxText = $(this).val().replace(/ /g, "<br/>"); 
    $(this).replaceWith('<div class="BoxText">' + $(this).val() + '</div>'); 

}); 
$("div.BoxText").live('dblclick', function() { 
    $(this).replaceWith('<textarea form="HTML" class="BoxText">' + boxText + '</textarea>'); 
}); 

내가 텍스트 영역 요소, 편집 할 수 있습니다

나는이 스크립트를 가지고있다. 사용자가 두 번 클릭하면 div로 변환됩니다. 그러나 div에서는 개행 문자가 유지되지 않습니다. 새 줄만
으로 변환하고 싶습니다. 현재 모든 공백이 변환 중입니다. 문자열을 저장하기위한 변수를 textarea로 다시 변환하는 두 번째 스크립트가 있습니다.
을 새 줄로 다시 변환해야합니다.

이것은 중복 된 것처럼 보일 수 있지만 이에 대한 좋은 이유가 있습니다.

답변

72

이렇게하면 줄 바꿈이 HTML 나누기 태그로 바뀝니다. 서로 다른 조합은 여러 브라우저/시스템과 줄 바꿈이 어떻게 해석되는지를 포함합니다.

 
$(this).val().replace(/\r\n|\r|\n/g,"<br />") 

이렇게하면 다른 브라우저에서 innerHTML을 해석하는 방법을 다루는 새로운 행으로 되돌아갑니다.

 
boxText.replace(/<br\s?\/?>/g,"\n"); 
+0

그러나 작동합니까, 내가 다시 텍스트 영역으로 div 변환, 텍스트가 사라집니다. –

+0

< and >을 HTML 엔터티로 바꿔야 할 수도 있습니다. .replace (//g, ">"); – Neil

+1

도 작동하지 않으며, br />가 텍스트 영역에 표시됩니다. 이는 \ n으로 변환되지 않음을 의미합니다. http://jsfiddle.net/QUFZJ/ –

관련 문제