2013-06-29 95 views
1

我有一個SharePoint jQuery表單,我在CEWP中使用,表單中的一個元素是一個Multi Selecion元素,它是一個允許多選的下拉列表。例如:填充多選擇drop dwon

<select name="cars" multiple> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="opel">Opel</option> 
    <option value="audi">Audi</option> 
</select> 

元素需要預先從SharePoint列表中選擇數據。我有一個名爲汽車的專欄,數據用逗號分隔(例如:薩博,奧迪)。

因此,如何使用spservices和jquery,如何預先選擇帶有「Saab」和「Audi」的元素? 以下是我在jsFiddle中所得到的: http://jsfiddle.net/rXGmc/ 然後我需要將它應用到sharepoint。 感謝您提供任何幫助或見解。

回答

1

你撥弄沒有工作,因爲你不包括jQuery的(在框架左側&擴展選項),因爲你的選擇有一些問題:

'select[name="cars"] option[value="saab"], select[name="Volvo"] option[value="audi"],option[value="benz"],' 
//        incorrect name here ----^^^^^  and a trailing comma ----------------^ 

您選擇的第一部分:

select[name="cars"] option[value="saab"] 

...居然會選擇「薩博」的選項,但隨後的第二部分:

, select[name="Volvo"] option[value="audi"] 

...試圖選擇一個選項元素是一個select元素與name="Volvo"孩子並沒有選擇這個名字。然後第三部分:

, option[value="benz"], 

...試圖選擇一個帶有「benz」的選項,而不管它可能屬於哪個選擇元素。

但整個選擇器不起作用,因爲它有一個尾隨逗號。

所以解決這些問題,它會在「薩博」和「奧迪」工作:

'select[name="cars"] option[value="saab"], select[name="cars"] option[value="audi"]' 

演示:http://jsfiddle.net/rXGmc/2/

說了這麼多,一個整潔的選擇是使用.find().children()

$('select[name="cars"]').children('[value="saab"],[value="audi"]') 
         .attr('selected', 'selected'); 

演示:http://jsfiddle.net/rXGmc/4/

1

所以,如果我得到了很好,薩博,奧迪的輸出應該是這樣的:

<select name="cars" id="cars" multiple> 
    <option value="volvo">Volvo</option> 
    <option value="saab" selected="selected">Saab</option> 
    <option value="opel">Opel</option> 
    <option value="audi" selected="selected">Audi</option> 
</select> 

不能這樣做服務器端?

如果你想這樣做客戶端,我不知道什麼類型的數據的SharePoint回報,假設「薩博,奧迪」是一個字符串,你可以做這樣的事情在JavaScript:

<script> 
str = "Saab,Audi"; 
sel = str.split(","); 
// Note I have added id="cars" in the HTML 
options = document.getElementById("cars").getElementsByTagName("option"); 
for(var i in options) 
    for(var j in sel) 
     if(options[i].innerHTML == sel[j]) 
      options[i].selected="selected"; 
</script>