Estou usando o jquery e tenho uma textarea. Quando eu enviar pelo meu botão, alertarei cada texto separado por nova linha. Como dividir meu texto quando há uma nova linha?
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);
exemplo de entrada:
Hello
There
O resultado que eu quero é:
alert(Hello); and
alert(There)
Você deve analisar novas linhas, independentemente da plataforma (sistema operacional). Essa divisão é universal com expressões regulares. Você pode considerar o uso de:
Por exemplo
fonte
Deveria ser
você está passando uma string literal para o comando split, não um regex.
fonte
"\n"
e/\n/
são duas coisas TOTALMENTE diferentes em JS."
= string,/
= regex."\n"
e/\n/
combine as mesmas coisas?Já que você está usando
textarea
, você pode encontrar \ n ou \ r (ou \ r \ n) para quebras de linha. Então, o seguinte é sugerido:$('#keywords').val().split(/\r|\n/)
ref: verifique se a string contém uma quebra de linha
fonte
/\r?\n/
... acho que usar|
(ou) intercalaria resultados vazios para terminações de linha CRLF.\r
) em qualquer lugar da web moderna. O último lugar onde foram amplamente usados foi nas antigas versões do Mac OS de quase 20 anos atrás.Somente
var ks = $('#keywords').val().split(/\r\n|\n|\r/);
funcionará perfeitamente.
Certifique-se de que
\r\n
está colocado no início da string RegExp , porque será tentado primeiro.fonte
g
no final da regex não é necessárioA maneira mais simples e segura de dividir uma string usando novas linhas, independentemente do formato (CRLF, LFCR ou LF), é remover todos os caracteres de retorno de carro e, em seguida, dividir nos novos caracteres de linha .
"text".replace(/\r/g, "").split(/\n/);
Isso garante que quando você tem novas linhas contínuas (isto é
\r\n\r\n
,\n\r\n\r
ou\n\n
) o resultado será sempre o mesmo.No seu caso, o código seria assim:
Aqui estão alguns exemplos que mostram a importância deste método:
fonte
var ks = $('#keywords').val().split("\n");
dentro do manipulador de eventosalert(ks[k])
vez dealert(k)
Demo
fonte
Good'ol javascript:
fonte
O problema é que, quando você inicializa
ks
, ovalue
não foi definido.Você precisa buscar o valor quando o usuário enviar o formulário. Portanto, você precisa inicializar o
ks
dentro da função de retorno de chamadafonte
Aqui está um exemplo com em
console.log
vez dealert()
. É mais conveniente :)Você pode tentar aqui
fonte
fonte