Lets say I have a textarea with this text:
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!
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With