Okay!... I\'m facing this for hours now...
html
It'd be easiest to use phpjs.org's nl2br function: http://phpjs.org/functions/nl2br:480
EDIT (fully working -- tested)
I tested this on your fiddle and it worked:
$('div').keyup(function(){
$('textarea').val( $(this).html().replace( /
/g, '\n' ) );
//$('textarea').val($(this).html()) // also not working as expected
});
$('textarea').keyup(function(){
$('div').html( nl2br( $(this).val(), 0 ) )
});
function nl2br (str, is_xhtml) {
// Converts newlines to HTML line breaks
//
// version: 1004.2314
// 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: '
\nOne
\nTwo
\n
\nThree
\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') ? '' : '
';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}