我有textarea
,用户最多可以写1000个字符。我需要获取jQuery('#textarea').val()
并创建一个数组,其中每个项目都是textarea
值的一行。这意味着:
这是textarea内部的一个很好的路线 这是另一条线 (让我们假设这一行是空的 - 应该被忽略) 有人在上面留下了2条以上的新线。
应该转换为JavaScript数组:
var texts = [];
text[0] = 'This is a nice line inside the textarea.';
text[1] = 'This is another line.';
text[2] = 'Someone left more than 2 new lines above.';
这样他们就可以轻松地imploded来查询字符串(这是提供者所需的qs格式):
example.com/process.php?q=["This is a nice line inside the textarea.","This is another line.","Someone left more than 2 new lines above."]
我尝试了phpjs explode()
和string.split("\n")
两种方法,但它们没有处理额外的新行(也就是换行符)。有什么想法吗?
答案 0 :(得分:33)
String.prototype.split()
很可爱。
var lines = $('#mytextarea').val().split(/\n/);
var texts = [];
for (var i=0; i < lines.length; i++) {
// only push this line if it contains a non whitespace character.
if (/\S/.test(lines[i])) {
texts.push($.trim(lines[i]));
}
}
请注意,并非所有平台都支持String.prototype.split
,因此jQuery会提供$.split()
。它只是修剪字符串末尾周围的空格。
$.trim(" asd \n") // "asd"
请在此处查看:http://jsfiddle.net/p9krF/1/
答案 1 :(得分:5)
使用split
功能:
var arrayOfLines = $("#input").val().split("\n");
答案 2 :(得分:3)
var split = $('#textarea').val().split('\n');
var lines = [];
for (var i = 0; i < split.length; i++)
if (split[i]) lines.push(split[i]);
return lines;
答案 3 :(得分:1)
试试这个
var lines = [];
$.each($('textarea').val().split(/\n/), function(i, line){
if(line && line.length){
lines.push(line);
}
});