2013-12-09 16 views
5

Beim Hinzufügen einer Zeichenfolge, in JavaScript festgelegt, zu einem Textarea-Wert, scheint es, Zeilenumbrüche fein zu konvertieren. Wenn diese Zeichenfolge aus einem Datenattribut abgerufen wird, scheint sie jedoch die Zeilenumbrüche zu enthalten. \ NjQuery textarea Wert konvertiert keine Zeilenumbrüche

Beide haben eine Zeichenfolge, so dass ich verwirrt bin, wie die eine funktioniert, aber nicht die andere.

Wie kann ich das Datenattribut greifen und die Zeilenumbrüche mit einem Textfeld arbeiten lassen?

<div id="test" data-message="this\ntest"></div> 
<textarea id="textarea"></textarea> 
<textarea id="textarea2"></textarea> 
var html = 'this\ntest'; 
var div = $('#test').data('message'); 

$('#textarea').val(html); 
$('#textarea2').val(div); 

JSFiddle Example

+0

aussieht, wenn der Wert aus dem Attribut lesen die '\' ist entkam mit '' \\ finden Sie in der Länge diff zwischen 'html' und 'div' http://jsfiddle.net/arunpjohny/7q8RG/1/ –

Antwort

7

Sie müssen die HTML-Zeichen-Entity für Zeilenumbruch innerhalb einer HTML-Eigenschaft verwenden: &#13;

<div id="test" data-message="this&#13;test"></div> 

Updated fiddle

+0

Wie dumm von mir. Vielen Dank! – digitalclubb

+0

Kein Problem, froh zu helfen. –

3

Wenn Sie es von der Datenattribut die \n entkam wird immer so dass Sie es ersetzen müssen:

$('#textarea2').val(div.replace("\\n","\n")); 

Example

+0

global ersetzen: 'div.replace (/ \\ n/g," \ n ")' – Pete