Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript split() not working in IE

Lets say I have a textarea with this text:

  1. first line some text.
  2. second line, other text. next line will be empty.
  3. (empty line)
  4. (empty line)
  5. last line here

As you can see, lines 3 and 4 are empty (\n). I need to get the exact lines structure (with empty lines as well) and convert it to an array. Each line is an element of the array. This is my current code:

var lines = $('#q').val().split(/\n/);
alert(lines.length); //using alert() because IE doesn't support console.log()
var texts = [];
for(i = 0; i < lines.length; i++) {
    texts.push($.trim(encodeURIComponent(lines[i])));
}

It works great on all browsers, except IE. For some reason, the split() function ignores empty lines (3 and 4) in IE. Because of that, they are never passed into the array :s

Solution by Squeegy in the comments

Replace split(/\n/) with split("\n") - damn you IE!

like image 736
Andres SK Avatar asked Dec 21 '22 04:12

Andres SK


1 Answers

The regex split is behaving strangely in IE8 and lower. Use a string comparison instead and it seems to work (fiddle)

testText.split("\n")

rather than

testText.split(/\n/)

[Edit] From Steven Levithan's Blog:

Internet Explorer excludes almost all empty values from the resulting array (e.g., when two delimiters appear next to each other in the data, or when a delimiter appears at the start or end of the data)

like image 161
canon Avatar answered Dec 24 '22 00:12

canon