2012-11-21 2 views
1

텍스트 영역에서 줄 바꿈을 캡처하려고 필사적으로 노력하고 있습니다. 텍스트 영역의 내용을 데이터베이스에 저장 한 다음 데이터베이스에서 가져온 텍스트 영역에 표시하려고합니다. 텍스트 영역은 편집 상자의 역할을해야합니다. 어떤 시점에서도 html로 표시해야합니다.javascript/html/php는 텍스트 영역에서 줄 바꿈을 캡처합니다.

텍스트 영역의 텍스트를 줄의 배열로 변환하고 \ r \ n의 문자로 분해 한 다음이를 파싱하여 텍스트 영역의 내용을 서버에 게시하는 일반 html 페이지에서이 작업을 수행 할 수있었습니다. 쉼표로 구분 된 목록의 목록으로. 그런 다음 줄을 다시 표시하려면 쉼표를 \ n으로 바꾸고 줄 바꿈으로 텍스트를 가져 와서 텍스트 영역 내에 표시 할 수 있습니다. 해킹 조금하지만 작동합니다.

그러나 html을 사용하여 서버에 텍스트 영역 내용을 게시하는 대신 JavaScript로 getElementByID를 사용하여 가져오고 자바 스크립트로 서버에 게시 할 때 작동하지 않는 것처럼 보입니다.

html을 사용하여 텍스트 영역 콘텐츠를 가져오고 \ r \ n에 폭발 시키면 줄만큼 많은 요소가있는 배열이 생성됩니다.

그러나 javascript의 getElementByID를 사용하여 텍스트 영역의 내용을 가져오고 \ r \ n에서 폭발 시키면 배열에서 행이 실행되는 요소가 하나만 생깁니다. 다시 말해, 줄 바꿈이 발생하지 않습니다.

자바 스크립트에서 텍스트를 가져올 때 줄 바꿈이 사라지는 이유는 누구나 알고 있으며 자바 스크립트에서 줄 바꿈을 유지하는 방법에 대한 제안이 있습니까?

감사합니다.

단축 코드 : 자바 스크립트

getText() { 

var textobj = document.getElementById("text"); 
var text = textobj.value; 

...some code for AJAX 


    document.getElementById("droptext").innerHTML=xmlhttp.responseText; 
... some more code for Ajax 

xmlhttp.open("GET","savetext.php?text="+text,true); 
xmlhttp.send(); 
} 

HTML

<div id="droptext"><textarea id="text"><textarea></div> 
<a href="javascript:void(0);" onclick="getText();">Save Text</a> 

PHP

$text = $_GET['text']; 
$textarray = explode("\r\n", $text); 
$text = implode(",",$textarray); //converts to comma delimited list 

...store in database 

...fetch from database and echo text back for editing 

$text = $row['text']; 
$text = str_replace(",", "\n", $text); 

echo '<textarea>'.$text.'</textarea>'; 
+0

내가보기에 'document.getElementById ("droptext"). innerHTML = xmlhttp.responseText '가'텍스트 '를 지 웁니다. texarea –

답변

0

수정되지 않은 전체 내용을 저장에 대한 문제가 무엇입니까? 어떤 데이터베이스를 사용하고 있는지 알 수는 없지만 대부분이 줄 바꿈으로 텍스트 필드를 지원해야합니다.

여전히 문제가있는 경우 문제가 "\ r \ n"을 사용하고 있다면 서버로 전송되는 내용을 표시 할 수 있습니까?

또한 PHP에서 반환 한 텍스트 영역은 id를 missign하므로 getText를 두 번 이상 수행하지 못하게해야합니다.

+0

수정되지 않은 상태로 저장하면 다시 나오는 텍스트가 고독한 휴식없이 표시됩니다. 이것들을 적어도 볼 수있는 쉼표 (예 : 이스케이프 처리되지 않은)로 변환하는 이유입니다. 나는 서버로 보내지는 문자를 이스케이프 처리하는 좋은 방법을 모른다. 내가보기에 텍스트 만 있습니다. 검색 및 숨겨진 문자를 교체 thrm을 볼 수있는 유일한 방법입니다 – user1260310

+0

당신이 대답을 발견하게되어 기쁘다 –

1

다른 질문에 대한 답을 찾았습니다. 이 서버에 요청을 제출하면

JavaScript: How to add line breaks to an HTML textarea?

는 자바 스크립트를 urlencode 라인은 중단되지 않습니다. 그들은 기본적으로 사라집니다. 따라서 요청 전에 javascript에서 자신의 urlencoding을 수행해야합니다.

var text2 = text.replace("\n\r","&#13;&#10;"); 

참고, 다른 토론에서 몇 가지 제안을 POST의에는 urlencoding이 있고 요청은 다른 언어에서 다르게 처리됩니다 GET하지만 테스트 때 나는 둘 사이에 어떤 차이를 산업사하지 않았다.

관련 문제