2011-11-14 249 views
48

我使用jquery,我有一個textarea,所以當我提交按鈕時,我會以換行符單獨提醒每個文本。如何從換行符分割?Javascript如何拆分換行

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) 

回答

54

嘗試初始化您提交函數內部的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); 
+1

警報(k)僅提示序號,而不是值。你應該提醒(KS [K]) – HBlackorby

+2

@hblackorby您的意見,雖然相關的,是有點靜音點作爲OP的主要問題是這裏的範圍和他的變量「KS」的初始化 –

30

它應該是你傳遞

yadayada.val.split(/\n/) 

在字面字符串分割命令,而不是一個正則表達式。

+6

還等什麼? 「\ n」分裂有什麼問題? –

+3

''\ n「'和'/ \ n /'在JS中是兩個完全不同的東西。 ' 「'=字符串,'/'=正則表達式。 –

+21

是的,但什麼是有效的區別?不要'」 \ n「'和'/ \ n /'匹配同樣的事情? –

3
  1. 移動var ks = $('#keywords').val().split("\n");的事件處理中
  2. 使用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); 

Demo

0

的問題是,當你初始化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); 
0

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]); 
0

這裏是例如與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); 
}); 

,您可以嘗試here

14

由於您使用textarea,你可能會發現\ n或\ r(或\ r \ n)的換行。所以,下面的建議:

$('#keywords').val().split(/\r|\n/)

裁判:check whether string contains a line break

+18

或者更具體地說,'/ \ r \ n /'...我想用'|?'(或)會交錯CRLF行結尾的空結果 – Dusty

+1

@Dusty太棒了!這是正確的。 – Turtle

7

你應該分析換行符無論平臺(操作系統)的 這種分裂與正則表達式是通用的,你可以考慮使用這個。

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

例如,

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

只是

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

將很好地工作。

確保\r\n被置於正則表達式字符串的前端,因爲它將首先被嘗試。