Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nl2br() equivalent in javascript [duplicate]

Possible Duplicate:
jQuery convert line breaks to br (nl2br equivalent)

Currently I add <BR> for each evt.which == 13. Is there a nl2br() for JavaScript, so I can do away with this evt.which == 13?

How different is this from php.js

$('#TextArea').keypress(function(evt) {      if (evt.which == 13) {          var range           = $('#TextArea').getSelection();         var image_selection = range.text;          $('#TextArea').replaceSelection('<BR>');         $('#TextArea1').html($('#TextArea').val());     } }); 
like image 867
X10nD Avatar asked Sep 19 '11 07:09

X10nD


People also ask

What is the equivalent of Br in JavaScript?

The exchange of new line & br HTML tag could refer to PHP - nl2br() function, which uses to inserts HTML line breaks before all newlines in a string. These JavaScript functions consider whether to use insert or replace to handle the swap.

How do you use nl2br?

Definition and Usage The nl2br() function inserts HTML line breaks (<br> or <br />) in front of each newline (\n) in a string.


2 Answers

Take a look at nl2br on php.js which seems exactly what you're looking for. Basically, it's:

function nl2br (str, is_xhtml) {     if (typeof str === 'undefined' || str === null) {         return '';     }     var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';     return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); } 

EDIT:
your example using nl2br() may be changed like this:

$('#TextArea').keypress(function(evt){         $('#TextArea1').html(nl2br($('#TextArea').val()));     }); 

(note that this updates #TextArea1 on every keypress and doesn't change the value of #TextArea wich is what I think you're looking for, but I might be misunderstanding)

EDIT2:
If you want to get the behaviour of your old function (with inserting <br/>s to #TextArea) do this:

$('#TextArea').keypress(function(evt){         $('#TextArea').html(nl2br($('#TextArea').val())); // replace linebreaks first         $('#TextArea1').html($('#TextArea').val()); // copy to #TextArea1     }); 
like image 156
oezi Avatar answered Oct 01 '22 06:10

oezi


Here is a function nl2br in php.js.

function nl2br (str, is_xhtml) {   // http://kevin.vanzonneveld.net   // +   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<br />\nvan<br />\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: '<br />\nOne<br />\nTwo<br />\n<br />\nThree<br />\n'   var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>'; // Adjust comment to avoid issue on phpjs.org display    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); } 
like image 25
xdazz Avatar answered Oct 01 '22 06:10

xdazz