我正在使用Kendo多选框,如下所示,但我无法获取所选值
var multiselect = $("#SelectRoles").data("kendoMultiSelect");
var selectedData= [];
var items = multiselect.value();
for (var itm in items)
{
selectedData.push(itm);
}
但是,数组selectedData返回的是多选框中项目的索引而不是值。
我正在使用Kendo多选框,如下所示,但我无法获取所选值
var multiselect = $("#SelectRoles").data("kendoMultiSelect");
var selectedData= [];
var items = multiselect.value();
for (var itm in items)
{
selectedData.push(itm);
}
var multiselect = $("#SelectRoles").data("kendoMultiSelect");
var selectedData= [];
var items = multiselect.value();
for (var i=0;i<items.length;i++)
{
selectedData.push(items[i]);
}
var ms = $("#multiselect").kendoMultiSelect({
value: ["1", "2"]
}).data('kendoMultiSelect');
var selectedItems = ms.value();
console.log(selectedItems); // ["1", "2"]
var selected = $("#multi").data("kendoMultiSelect").value();
@foreach (var cm in Model.CaseMembers)
{
<tr>
<td>
@(Html.Kendo().MultiSelect()
.Name("IsDelegateFor" + cm.CaseMemberId)
.Placeholder("is a delegate for..")
.DataTextField("FullName")
.DataValueField("CaseMemberId")
.BindTo(Model.Attorneys)
)
</td>
</tr>
}
var sRows = [];
$('#cmGrid tr').each(function () {
// 'this' is a tr
$tr = $(this);
// create an object that will hold my array of selected values (and other stuff)
var rec = {};
rec.IsADelegateFor = [];
// loop over all tds in current row
$('td', $tr).each(function (colIndex, col) {
if (colIndex === 3) {
// make sure our MultiSelect exists in this td
if ($(this).find("#IsDelegateFor" + rec.CaseMemberId).length) {
// it exists, so grab the array of selected ids and assign to our record array
rec.IsADelegateFor = $(this).find("#IsDelegateFor" + rec.CaseMemberId).data("kendoMultiSelect").value();
}
}
}
// add this tr to the collection
sRows.push(rec);
}
所以这只是一种非常冗长的方式来说明这一行代码,就像其他人提到的那样,完美地抓取了id。没有必要迭代.value()数组并将内容推送到另一个数组中!
rec.IsADelegateFor = $(this).find("#IsDelegateFor" + rec.CaseMemberId).data("kendoMultiSelect").value();
因此,在您的原始代码中,以下代码没有理由不起作用,
var multiselect = $("#SelectRoles").data("kendoMultiSelect");
var selectedData = [];
selectedData = multiselect.value();
console.log(selectedData);
除非
Volvox提供的解决方案可行。
以下是jQuery版本,
var multiselect = $("#SelectRoles").data("kendoMultiSelect");
var selectedData= [];
var items = multiselect.value();
$.each(items ,function(i,v){
selectedData.push(v);
});
如果您想同时获取所选文本和值:
$("#SelectRoles").width(300).kendoMultiSelect({
dataSource: {
transport: {
read: pg + "Controller/Roles"
}
},
dataTextField: "Label",
dataValueField: "Code"
});
var multiselect = $("#SelectRoles").getKendoMultiSelect();
var selectedData = [];
var items = multiselect.dataItems();
for (var itm in items) {
selectedData.push(itm.Label, itm.Code);
}