2011-06-13 3 views
17

사용자가 Enter 키를 누를 때 \n을 삽입하는 텍스트 영역이 있습니다. 이 텍스트 영역의 코드는 jQuery.ajax()을 통해 WCF 서비스로 전송됩니다. \n을 DB에 저장할 수 없으므로 서비스를 사용하는 다른 응용 프로그램에는 표시되지 않습니다. n을 (를) <br /> (으)로 바꾸는 방법은 무엇입니까?

어떻게 \n<br /> 태그로 바꿀 수 있습니까?

솔루션 당신의 잘 많은

시도하고 일부는 좌 /의 g (전역 수정)와 자바 스크립트 정규식 얻었다. 끝에 \ n 두 번 삽입했다, 왜, 내 유일한 추측 keypress 이벤트에 대한 jQuery 두 번 \ n 내가 디버깅을 만들 었는지 모르겠다. 당신이 PHP를 지원하는 경우

$('#input').keypress(function (event) { 
    if (event.which == '13') { 
     inputText = $('#input').val() + '\n'; 
     $('#input').val(inputText); 
    } 
}); 
+6

은 보통 클라이언트 측 – Teneff

+0

@Teneff에 교체하는 것은 좋은 생각이 아니다, \ n은 서버에 다음 전송되지 않습니다, 그것이야 eems가 생략되었습니다. 나는 서버에서 그것을 바꿀 수 있지만 나는 텍스트를 제외하고는 아무것도받지 못한다. – eugeneK

+1

입력 한 원시 형식으로 저장해야합니다./n을 지원할 수있는 데이터를 검색하기 위해 새 앱을 추가 한 경우 반드시 표시해야합니다. 인코딩하려고 했습니까? – jimplode

답변

26

것은 글로벌 범위로 교체

$('#input').val().replace(/\n/g, "<br />") 

또는

$('#input').val().replace("\n", "<br />", "g") 
+1

그것은 세계적으로 잘 대체하지만 keypress에 두 번 br 태그를 대체합니다 – eugeneK

11

가 같이 할 수있다 :

$('textarea').val().replace(/\n/g, "<br />"); 

편집 : 죄송합니다 ... 자바 스크립트에서 정규 표현식해야 따옴표 제외

working example

+0

doesn ' 왜 일하는지 모르겠다. – eugeneK

+0

그는 '/ \ n /'이 아니라'\ n'을 대체하기 때문에 작동하지 않습니다. 그리고 그것이 정규 표현식으로 의도 된 것이라면 첫 번째 발생만을 대체 할 것입니다. – BrunoLM

+1

잘못되었습니다. ' "/ \ n /"이 아닌''n ''또는'/ \ n /'을 사용하십시오. 정규 표현식을 인용 할 때 자바 스크립트가 PHP처럼 장애가되지 않습니다.) – Qtax

1

간단한 자바 스크립트 문자열 기능을 사용할 수 있습니다.

string.replace("\n", "<br>") 
1

WCF 서비스에서 String.Replace을 사용할 수 있습니까?

text = text.Replace("\n","<br />"); 
6

의견 및 기타 답변에서와 마찬가지로 서버 측에서 처리하는 것이 좋습니다.

그러나 당신이 클라이언트 측에 작업을 수행하는 방법을 알고 싶다면이 쉬운 하나 명의 수정입니다 : textareaContent가 텍스트 영역에있는 데이터와 변수가

textareaContent.replace(/\\n/g, "<br />"); 

.

편집 : 처음으로 일치하는 것뿐만 아니라 전체적으로 대체되도록 변경되었습니다.

+0

\ n의 처음 모습 만 대체합니다. – eugeneK

+0

주목 해 주셔서 고맙습니다. – rzetterberg

+0

나를 위해 일한 유일한 솔루션 ... 감사합니다 :) –

1
var replaced = $('#input').val().replace("\n", "<br/>"); 
1

당신은 예를 들어, 정규식의 작은 도움으로 기능을 대체 내장 자바 스크립트를 사용할 수

$('#input').val().replace(/\n\r?/g, '<br />') 

이 코드는 모든 repla 입력을 반환합니다. ced with <br>

+0

이것은 워드 프레스 편집기 나를 위해 일한이 전체 페이지 중 유일한 것입니다. 플러그인에서 워드 프레스 편집기를 사용하고 어떤 이유에서든 편집자 내용의 미리보기를 보여줄 필요가있는 경우, 이것이 여기에있는 유일한 편집기입니다. –

+0

정말이 질문에서 모든 해결책을 시도 했습니까? 그렇다면 정말로 끈기 있습니다. :) –

2

기타 답변 작성하기, 이것은 아마도 PHP가 가장 잘 수행 할 것입니다.

function nl2br (str, is_xhtml) { 
    // Converts newlines to HTML line breaks 
    // 
    // version: 1103.1210 
    // discuss at: http://phpjs.org/functions/nl2br // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // + improved by: Philip Peterson 
    // + improved by: Onno Marsman 
    // + improved by: Atli Þór 
    // + bugfixed by: Onno Marsman // +  input by: Brett Zamir (http://brett-zamir.me) 
    // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // + improved by: Brett Zamir (http://brett-zamir.me) 
    // + improved by: Maximusya 
    // *  example 1: nl2br('Kevin\nvan\nZonneveld'); // *  returns 1: 'Kevin\nvan\nZonneveld' 
    // *  example 2: nl2br("\nOne\nTwo\n\nThree\n", false); 
    // *  returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n' 
    // *  example 3: nl2br("\nOne\nTwo\n\nThree\n", true); 
    // *  returns 3: '\nOne\nTwo\n\nThree\n' var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>'; 

    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); 
} 

http://phpjs.org/functions/nl2br:480

+0

$ 1과 $ 2는 무엇을 의미합니까? ([^> \ r \ n]?)과 (\ r \ n | \ n \ r | \ r | \ n) – eugeneK

+0

진실을 말하면 나는 정규 표현식에 그렇게 좋지 않다. 그러나 이것에 대해 알고있는 조금은이 두 링크로 요약됩니다. 달러 표시 - http://mootools-users.660466.n2.nabble.com/Moo-preg-replace-in-javascript-td4718179.html; 모든 r과 n - http://lawrence.ecorp.net/inet/samples/regexp-format.php (캐리지 리턴을 html br로 바꾸는 것에 대한 아래로 스크롤하십시오. 코드는 여기에 표시된대로 작동합니다 - http : /jsfiddle.net/Dar96/9/ – Tomas

1

다음은 대체됩니다 : 이제 당신은 아마 phpjs.org 년대 this function의 자바 스크립트 포트를 사용해야합니다, 당신은 (무의미하고 불필요한 서버 부하를 야기하는)이 아약스 싶지 않아 가정 <br />\n의 모든 인스턴스 :

while (message.indexOf("\\n") !== -1) { 
    message = message.replace("\\n", "<br />"); 
} 
+0

모든 반복을 대체하기 때문에 한 번의 반복으로 충분합니다. –

관련 문제