设置选定值后,引导选择选择器刷新间歇性工作

Posted

技术标签:

【中文标题】设置选定值后,引导选择选择器刷新间歇性工作【英文标题】:Bootstrap selectpicker refresh works intermittently after set selected val 【发布时间】:2018-08-29 00:11:55 【问题描述】:

我在我的 MVC appmvc 中使用 bootstrap selectpicker 进行两个下拉菜单-

<select id="drpSectorValues" title="Select Sector" name="SectorName" required="required" class="form-control selectpicker show-menu-arrow show-tick"></select>
<select id="drpPractice" title="Select Practice" name="SectorDivisionId" required="required" class="form-control selectpicker show-menu-arrow show-tick"></select>

这些下拉菜单与其他两个下拉菜单级联,并且选项项使用 jQuery AJAX 根据其各自父下拉菜单中加载的项目动态加载。

let $jq = jQuery.noConflict();
loadSectorDropdownValues(parseInt($jq("#drpProjectRegion")[0].selectedIndex + 1));  //works fine
loadPracticeDropdownValues(parseInt($jq("#drpSector")[0].selectedIndex + 1));  //works fine

$jq.when(loadSectorDropdownValues(), loadPracticeDropdownValues()).done(function () 
    //below code is for setting selected item which works intermittently
    setTimeout(function () 
        $("#drpSectorValues").val('@Model.SectorName');
        $('.selectpicker').selectpicker('refresh');
        $("#drpPractice").val(@Model.SectorDivisionId);
        $('.selectpicker').selectpicker('refresh');
    , 500);
);

下拉选项已通过 AJAX 正确加载,但我无法设置所选项目。有时他们工作,有时不工作。我也没有收到任何 javascript 错误。

有人可以看看这是什么问题吗?如果我能提供一些细节,请告诉我。

【问题讨论】:

setTimeout 函数中的代码没有意义。我只能假设这必须是一个编辑视图,您已经在之前的创建或编辑操作中选择了 SectorNameSectorDivisionId 的值。如果是这种情况,那么您需要研究this DotNetFiddle 中的代码以了解如何生成级联下拉列表(您需要使用DropDownListFor() 绑定到您的模型,并且第二个下拉列表选项根据之前选择的值填充) @StephenMuecke 是的,你是对的。不幸的是,由于某种原因,我无法使用 Razor 控件。我能够通过一些更改来解决这个问题。请查看我的更新代码。 答案在答案部分,而不是问题:) @StephenMuecke 好的,我会添加它:) 【参考方案1】:

似乎我错误地使用了 jQuery when() 函数。我进行了以下更改,现在可以正常使用-

let $jq = jQuery.noConflict();
var regionId = parseInt($jq("#drpProjectRegion")[0].selectedIndex + 1);
var sectorId = parseInt($jq("#drpSector")[0].selectedIndex + 1);

$jq.when(loadSectorDropdownValues(regionId), loadPracticeDropdownValues(sectorId)).done(function () 
    $("#drpSectorValues").val('@Model.SectorName');
    $("#drpPractice").val(@Model.SectorDivisionId);
    $('.selectpicker').selectpicker('refresh');
);

【讨论】:

以上是关于设置选定值后,引导选择选择器刷新间歇性工作的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 日期选择器中将特定选定日期设置为最小日期? (爪哇)

引导日期选择器不工作

如何在 android 日期选择器中将特定选定日期设置为最小日期? [复制]

设置默认日期引导日期选择器

引导日期选择器上的棘手问题

引导日期时间选择器不更新第二次