簡體   English   中英

如何通過 jQuery 在 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);

這對我有用:

這里開始(對於像我這樣的 Select2 新手很有用):

與數據對象一起傳入的其他參數將包含在 Select2 公開的數據對象中。

在這里它告訴如何檢索當前選擇,該選擇作為對象數組返回:

$('#mySelect2').select2('data');

因此,對於此問題的代碼示例,您將檢索當前選擇的“鍵”值,如下所示:

var key = ($('#ProjectId').select2('data')[0]).Key;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM