2

我有一个在 CEWP 中使用的 SharePoint jquery 表单,表单上的元素之一是 Multi Selection 元素,它是一个允许多项选择的下拉列表。前任:

 <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/ 然后我需要将它应用到共享点。感谢您提供的任何帮助或见解。

4

2 回答 2

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 返回什么类型的数据,假设“Saab,Audi”是一个字符串,你可以在 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>
于 2013-06-29T22:42:54.850 回答
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"]

...实际上会选择“saab”选项,但是第二部分:

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

...正在尝试选择一个选项元素,它是一个选择元素的子元素,name="Volvo"并且没有具有该名称的选择。然后是第三部分:

, option[value="benz"],

...正在尝试使用“benz”选择一个选项,无论它可能属于哪个选择元素。

但是整个选择器不起作用,因为它有一个尾随逗号。

所以解决这些问题,它将适用于“saab”和“audi”:

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

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

说了这么多,一个更简洁的选择是使用.find()or .children()

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

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

于 2013-06-29T22:54:04.730 回答