The easiest and safest way to break a line using newlines, regardless of format (CRLF, LFCR or LF), is to remove all carriage return characters and then split them into newlines . "text".replace(/\r/g, "").split(/\n/);
This ensures that if there are continuous newlines (i.e., \r\n\r\n , \n\r\n\r or \n\n ), the result will always be the same.
In your case, the code will look like this:
(function ($) { $(document).ready(function () { $('#data').submit(function (e) { var ks = $('#keywords').val().replace(/\r/g, "").split(/\n/); e.preventDefault(); alert(ks[0]); $.each(ks, function (k) { alert(k); }); }); }); })(jQuery);
Here are a few examples showing the importance of this method:
var examples = ["Foo\r\nBar", "Foo\r\n\r\nBar", "Foo\n\r\n\rBar", "Foo\nBar\nFooBar"]; examples.forEach(function(example) { output('Example "${example}":'); output('Split using "\n": "${example.split("\n")}"'); output('Split using /\r?\n/: "${example.split(/\r?\n/)}"'); output('Split using /\r\n|\n|\r/: "${example.split(/\r\n|\n|\r/)}"'); output('Current method: ${example.replace(/\r/g, "").split("\n")}'); output("________"); }); function output(txt) { console.log(txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r")); }
nick zoum Sep 26 '19 at 12:38 on 2019-09-26 12:38
source share