簡體   English   中英

填充Select2下拉列表后,如何強制元素標題保持顯示

[英]After Populating a Select2 Dropdown List How Can I Force the Element Title to remain Displayed

在頁面加載時,我填充一個Select2 Select->Option列表,然后使用此處的Jquery技術綁定change事件:綁定加載+更改同時進行,以便我可以控制更改事件以加載其他信息。 現在,除此以外,這一切都很好,這就是問題所在。

用函數fillProjectSelect();填充Select->Option列表后fillProjectSelect(); 列表中的第一個選項顯示為默認文本,這意味着顯示的項目上的更改事件不會觸發,因為它不是更改。 自然,這會引起很多混亂。

因此,問題是如何強制Select2選項文本顯示列表標題(恰好是“ Select a Project而不是列表中的第一個元素)?

這是一個代碼片段:

fillProjectSelect();
$( "#projectSelector" ).bind ('change', function () {
    var val = $("#projectSelector").val();
     $( "#project_description" ).text( projectData[val].description );
     $( "#contract_sum" ).text( projectData[val].contract_sum );
     $( "#percentage_fee" ).text( projectData[val].percentage_fee );
     $( "#fee" ).text( projectData[val].fee );
     var project_ID = projectData[val].project_ID;
     etc...
   })

為了以防萬一,我還添加了fillProjectSelect()代碼。

        function fillProjectSelect() {
        var projectIndex = 0;
        getProjectData(function(data) {
        console.log(data)
         var combo = $(".myselect")[projectIndex];
         for (var i = 0; i <  data.projectData.length; i++) {
            projectData[i] = data.projectData[i];
            var option = document.createElement("option");
            option.setAttribute("value",i);
         //  option.setAttribute("selected",true);
            option.innerHTML=projectData[i].name;
            combo.appendChild(option);
         }
     });
    }

以防萬一有人感興趣,似乎有些破解似乎有用。 您要做的是將第一個元素的值設置為-1,將選項文本設置為“ Pick a Project”,然后在單擊事件期間使用以下命令將其刪除

$(".myselect option[value='-1']").each(function() {
    $(this).remove();
});

暫無
暫無

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

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