2015-05-20 80 views
0

我正在使用bootstrap selectpicker,我需要一個分隔符來分隔所選的文本。這樣做的原因的問題是當用戶選擇在自舉多個選項中進行選擇,在不通過分隔符等的值分離出的文本:將字符串拆分爲  ..... javascript/jquery

<select class="selectpicker" multiple> 
     <option value=1>Mustard</option> 
     <option value=2>Ketchup</option> 
     <option value=3>Relish</option> 
     </select> 

的JavaScript來創建選擇器:

$('.selectpicker').selectpicker(); 

用戶選擇芥末和番茄醬。獲取值:

$('.selectpicker').val();//outputs '1,2' 

注意逗號分隔符。但我也需要文字以及:

$('.selectpicker option:selected').text(); //outputs 'MustardKetchup 

通知無分隔符。所以我加了一個無形的分隔符,像這樣:

<option value=1>Mustard&nbsp;&nbsp;&nbsp;&nbsp;</option> 
     <option value=2>Ketchup&nbsp;&nbsp;&nbsp;&nbsp;</option> 
     <option value=3>Relish&nbsp;&nbsp;&nbsp;&nbsp;</option> 

現在我得到預期如下:

$('.selectpicker option:selected').text(); //outputs 'Mustard Ketchup 

但是,當我嘗試拆分字符串,這是行不通

var text = $('.selectpicker option:selected').text(); //outputs 'Mustard Ketchup 
    var splitstr = text.split(' '); //does not split by 4 spaces only has an array of 1 

這也不是:

var splitstr = text.split('&nbsp;&nbsp;&nbsp;&nbsp;'); //does not split by 4 spaces only has an array of 1 
    //kinda figured this wouldnt work,but took a shot anyway 

我選擇了4個空格,因爲我的數據中有逗號,所以逗號分隔符不起作用。如何在JavaScript或jQuery中將字符串拆分爲4個空格(       )?

謝謝

回答

4

我如何通過4個空格()在JavaScript或jQuery的拆分字符串?

使用正則表達式來拆分:

var splitstr = text.split(/\s{4}/); 
+0

這個工作完美...我將它添加到我的阿森納。謝謝!!!!! – BoundForGlory

+0

@BoundForGlory偉大:) – Zee

2

非換空間,是不是我們鍵入一個空格。這是String.fromCharCode(160)。你會想用其中的四個吐出來。如果你在做$('.selectpicker option:selected').html()(自<option>以後就可以了),那麼你可以使用四個&nbsp;字符串作爲分隔符。

這裏就是我建議這樣做,但:

var text = $('.selectpicker option:selected').text(); 
var nbsp = String.fromCharCode(160); 
var splitstr = text.split(nbsp + nbsp + nbsp + nbsp); 
+0

感謝這個信息。我會保留這個以備後用 – BoundForGlory

3

而不是分裂的字符串,爲什麼不嘗試通過遍歷$(「selectpicker選項:選擇」)中提取單獨字符串到一個數組是這樣的:

var arr = []; 
$('.selectpicker option:selected').each(function() { 
    arr.push($(this).text()); 
}); 
+1

我喜歡這種方法。即使我很高興我學會了用正則表達式分割字符串空間 – BoundForGlory

+1

是的,正則表達式是一種值得學習的技能 - 但是源代碼中的所有這些nbsp都會讓我惱火。 –

1

你能做到這一點,而無需通過通過各自選擇的選項循環和增加值到一個數組增加空間分隔符的<option>值的麻煩去。

var selected = []; 
$('.selectedpicker option:selected').each(function() { 
    selected.push($(this).text()); 
} 

[編輯]

Toby T beat me to it.