JQuery: как вы проходите через каждую новую строку текста, набранного внутри текстовой области? - PullRequest
10 голосов
/ 13 ноября 2009

скажем, внутри <textarea>, я набираю кучу ключевых слов в каждой новой строке.

keyword1
keyword2
keyword3
...




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

Ответы [ 7 ]

22 голосов
/ 13 ноября 2009

Объект массива не имеет метода each. Поскольку вы зацикливаете строки, а не элементы, используйте метод jQuery.each (вместо метода jQuery (). Each):

var lines = $('textarea[name=sometextarea]').val().split('\n');
$.each(lines, function(){
  alert(this);
});
3 голосов
/ 13 ноября 2009

Я думаю, что ваша проблема с объектом jquery. val () возвращает строку, а split () возвращает массив. Но each () является свойством объекта JQuery. Попробуйте вместо этого:

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

обратите внимание на дополнительные $ (...) вокруг возврата split ().

1 голос
/ 05 апреля 2013
$("#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"));
});

Вы можете «слушать», используя live on keypress, поскольку другие предложили разделить на новую строку, и хитрость в цикле состоит в том, что с «each» вы получаете индекс и значение (elem в коде). Этот фрагмент добавляет значение строки к другому целевому элементу, который вы можете очистить перед циклом, используя $ ( "# Мишень") пустой ();.

1 голос
/ 13 ноября 2009

jQuery предоставляет метод each для объекта jQuery (или $). Это следует использовать вместо создания объекта jQuery из массива:

$.each($('textarea[name=sometextarea]').val().split('\n'), function(e){
    alert(this);
});
0 голосов
/ 23 декабря 2012

Я решил это с помощью 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
}
0 голосов
/ 22 декабря 2012

Если у меня есть текстовая область, имеющая некоторую ширину, и введенный текст, где текст автоматически переходит на новую строку из-за окончания текстовой области, можно ли эту строку разбить на новую строку в строке?

0 голосов
/ 13 ноября 2009

Как это ...

$.each($('textarea[name=sometextarea]').val().split('\n'), function(e){
alert(this);                                 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...