jquery:你如何遍历textarea中输入的每个文本换行符?

时间:2009-11-13 02:24:19

标签: jquery

让我们在<textarea>里面说,我在每一行都输入一堆关键字。

keyword1
keyword2
keyword3
...




$('textarea[name=sometextarea]').val().split('\n').each(function(e){
alert($(this));                 
});

7 个答案:

答案 0 :(得分:22)

数组对象没有任何each方法。在循环字符串而不是元素时,使用jQuery.each方法(而不是jQuery()。每个方法):

var lines = $('textarea[name=sometextarea]').val().split('\n');
$.each(lines, function(){
  alert(this);
});

答案 1 :(得分:3)

我认为您的问题在于jquery对象。 val()返回一个字符串,split()将返回一个数组。但each()是JQuery对象的属性。试试这个:

$($('textarea[name=sometextarea]').val().split('\n')).each(function(e){
alert($(this));                                 
});

注意split()返回附近的额外$(...)。

答案 2 :(得分:1)

jQuery在each(或jQuery)对象上提供$方法。应该使用它,而不是从数组中创建一个jQuery对象:

$.each($('textarea[name=sometextarea]').val().split('\n'), function(e){
    alert(this);
});

答案 3 :(得分:1)

$("#your-text-area").live("keypress",function(){
            var lines = $(this).val().split("\n");
            $.each(lines, function(n, elem) {
                     console.log(elem);
            $("<li></li>").text(elem).appendTo($("#target"));
});

你可以&#34;听&#34;使用live on keypress,正如其他人建议用换行符分割,循环中的技巧是&#34;每个&#34;你得到一个索引和值(代码中的元素)。此片段将行值附加到另一个目标元素,您可以在循环使用之前将其清空     $(&#34;#目标&#34)空();

答案 4 :(得分:0)

喜欢这个......

$.each($('textarea[name=sometextarea]').val().split('\n'), function(e){
alert(this);                                 
});

答案 5 :(得分:0)

如果我有一个有一些宽度和文本类型的textarea,由于textarea的结尾,文本会自动转到新行,那么每行可以将该字符串拆分成新的字符串吗?

答案 6 :(得分:-1)

我用codeigniter和php解决了这个问题。 这是一个代码:

$this->load->helper('text');
$name = 'some text that is longer than the width of text area and you need to do some thing with it...';
$name_array = word_wrap($name, 20); //20 is a number of character where your text will be wrapped.
foreach(preg_split("/((\r?\n)|(\r\n?))/", $name_array) as $line){
         echo $line.'</br>';
    //from here, you can do what ever you want with $line, put it to another array..whatever
}