[英]How can I get the value of selected optgroup with jquery and select2?
[英]How to get an extra parameter value in Select2 via jQuery?
我将一个额外的属性绑定到Select2 ddl 并希望通过 jQuery 检索此属性值( Key ),如下所示:
控制器:
public ActionResult GetProjects()
{
var projects = repository.Projects.Select(m => new ProjectViewModel
{
Id = m.Id,
Name = m.Name,
Key = m.Key //Extra parameter that I want to retrieve using jQuery
})
return Json(projects, JsonRequestBehavior.AllowGet);
}
我成功填充了 ddl 并尝试获取除 Name 和 Id onChange 之外的 Key 值,但不知道如何获取它:
看法:
<input type="hidden" id="key" name="Key" value=0 />
//I fill the ddl without no problem via Select2 and there is no need to post its code for brevity
@Html.DropDownListFor(m => m.ProjectId, Enumerable.Empty<SelectListItem>(), "Select")
$('#ProjectId').change(function (e) {
projectId = $(this).val(); // I can get the selected ProjectId value
debugger;
//!!! But cannot get the Key value
var key = $('#ProjectId').select2('data').Key;
}
任何想法?
这是 Select2 的渲染 HTML:
<select class="select2-hidden-accessible" data-val="true" data-val-number="The field Proje must be a number." data-val-required="Req" id="ProjectId" name="ProjectId"
tabindex="-1" aria-hidden="true"><option value="">Select</option>
<option value="1">Project A</option></select>
<span class="selection"><span class="select2-selection select2-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true"
aria-expanded="false" tabindex="0" aria-labelledby="select2-ProjectId-container"><span class="select2-selection__rendered" id="select2-ProjectId-container"
title="Project A"><span class="select2-selection__clear">×</span>Project A</span><span class="select2-selection__arrow" role="presentation">
<b role="presentation"></b></span></span></span>
这是问题的解决方案:
<input type="hidden" id="projectPKey" name="ProjectPKey" value=0 />
@Html.DropDownListFor(m => m.ProjectId, Enumerable.Empty<SelectListItem>(), "Select" )
projectId.select2({
//code removed for brevity
processResults: function (data, page) {
var newData = [];
$.each(data, function (index, item) {
newData.push({
id: item.Id, //id part present in data
text: item.Description, //string to be displayed
key: item.Key //extra parameter(s)
});
});
});
var pkey = $('#ProjectId').find(':selected').data().data.key;
$('#projectPKey').val(pkey);
console.log(pkey);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.