Подтвердить что ты не робот

Javascript, как разделить новую строку

Я использую jquery, и у меня есть текстовое поле, поэтому, когда я отправляю кнопку, я буду уведомлять каждый текст отдельно по новой строке. Как расколоться от новой строки?

  var ks = $('#keywords').val().split("\n");
  (function($){
     $(document).ready(function(){
        $('#data').submit(function(e){
           e.preventDefault();
           alert(ks[0]);
           $.each(ks, function(k){
              alert(k);
           });
        });
     });
  })(jQuery);

пример ввода:

Hello
There

Результат, который я хочу:

alert(Hello); and
alert(There)
4b9b3361

Ответ 1

Попробуйте инициализировать переменную ks внутри вашей функции отправки.

  (function($){
     $(document).ready(function(){
        $('#data').submit(function(e){
           var ks = $('#keywords').val().split("\n");
           e.preventDefault();
           alert(ks[0]);
           $.each(ks, function(k){
              alert(k);
           });
        });
     });
  })(jQuery);

Ответ 2

Это должно быть

yadayada.val.split(/\n/)

вы передаете литеральную строку команде split, а не регулярному выражению.

Ответ 3

Вы должны разбирать строки новой строки независимо от платформы (операционной системы) Этот раскол с регулярным выражением универсален, вы можете использовать его.

var ks = $('#keywords').val().split(/\r?\n/);

например.

"a\nb\r\nc\r\nlala".split(/\r?\n/) // ["a", "b", "c", "lala"]

Ответ 5

Просто

var ks = $('#keywords').val().split(/\r\n|\n|\r/);

будет работать отлично.

Убедитесь, что \r\n находится в начале строки RegExp, потому что он будет пробоваться первым.

Ответ 6

  • Переместите var ks = $('#keywords').val().split("\n"); внутри обработчика событий
  • Используйте alert(ks[k]) вместо alert(k)

  (function($){
     $(document).ready(function(){
        $('#data').submit(function(e){
           e.preventDefault();
           var ks = $('#keywords').val().split("\n");
           alert(ks[0]);
           $.each(ks, function(k){
              alert(ks[k]);
           });
        });
     });
  })(jQuery);

Демо

Ответ 7

Самый простой и безопасный способ разбить строку, используя новые строки, независимо от формата (CRLF, LFCR или LF), это удалить все символы возврата каретки и , а затем разделить на символы новой строки. "text".replace(/\r/g, "").split(/\n/);

Это гарантирует, что при наличии непрерывных новых строк (т.е. \r\n\r\n, \n\r\n\r или \n\n) результат всегда будет одинаковым.

В вашем случае код будет выглядеть так:

(function ($) {
    $(document).ready(function () {
        $('#data').submit(function (e) {
            var ks = $('#keywords').val().replace(/\r/g, "").split(/\n/);
            e.preventDefault();
            alert(ks[0]);
            $.each(ks, function (k) {
                alert(k);
            });
        });
    });
})(jQuery);

Вот несколько примеров, показывающих важность этого метода:

var examples = ["Foo\r\nBar", "Foo\r\n\r\nBar", "Foo\n\r\n\rBar", "Foo\nBar\nFooBar"];

examples.forEach(function(example) {
  output('Example "${example}":');
  output('Split using "\n": "${example.split("\n")}"');
  output('Split using /\r?\n/: "${example.split(/\r?\n/)}"');
  output('Split using /\r\n|\n|\r/: "${example.split(/\r\n|\n|\r/)}"');
  output('Current method: ${example.replace(/\r/g, "").split("\n")}');
  output("________");
});

function output(txt) {
  console.log(txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r"));
}

Ответ 8

Проблема заключается в том, что при инициализации ks параметр value не установлен.

Вы должны получить значение, когда пользователь отправляет форму. Поэтому вам нужно инициализировать ks внутри функции обратного вызова

(function($){
   $(document).ready(function(){
      $('#data').submit(function(e){
      //Here it will fetch the value of #keywords
         var ks = $('#keywords').val().split("\n");
         ...
      });
   });
})(jQuery);

Ответ 9

Good'ol javascript:

 var m = "Hello World";  
 var k = m.split(' ');  // I have used space, you can use any thing.
 for(i=0;i<k.length;i++)  
    alert(k[i]);  

Ответ 10

Вот пример с console.log вместо alert(). Это удобнее:)

var parse = function(){
  var str = $('textarea').val();
  var results = str.split("\n");
  $.each(results, function(index, element){
    console.log(element);
  });
};

$(function(){
  $('button').on('click', parse);
});

Вы можете попробовать здесь

Ответ 11

(function($) {
  $(document).ready(function() {
    $('#data').click(function(e) {
      e.preventDefault();
      $.each($("#keywords").val().split("\n"), function(e, element) {
        alert(element);
      });
    });
  });
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<textarea id="keywords">Hello
World</textarea>
<input id="data" type="button" value="submit">