【发布时间】:2017-03-03 21:45:22
【问题描述】:
我正在开发一个 ASP.NET MVC Web 项目。由于其简洁且吸引人的功能,我目前在我的项目中将 select2 用于多个下拉菜单。我对select2也有一些问题。我想在创建页面上创建一个下拉列表,当另一个下拉值更改时“更改”状态。 Select2 有一个下拉菜单,既可以从下拉菜单结果中进行选择,也可以输入您自己的条目并保存。 (参见https://select2.github.io/examples.html 上的标记部分)。我需要能够通过 javascript AFTER 页面加载动态打开/关闭标签。似乎 select2 只会初始化下拉菜单,之后就不允许动态更改。
查看用于在页面加载时初始化 select2 的 Html 和 Javascript 代码:
<div class="col-md-8">
@Html.ListBoxFor(model => model.modelNum, Model.modelNumList, new { @class= "js-tags" })
</div>
<script type="text/javascript">
$(".js-tags").select2({
placeholder: "Enter Model",
tags: true,
maximumSelectionLength: 1
})
</script>
以上部分效果很好。 Select2 已初始化,并遵循我的设置。在此之后,我的计划是更改 select2 的设置以销毁并重新初始化实例,因此编辑下拉菜单并关闭标签。当另一个下拉列表更改时,将调用以下 javascript 方法。
代码:
<script type="text/javascript" language="javascript">
function ChangeModelNum(_classID)
{
if(_classID == 1)
{
$(".js-tags").select2("destroy").select2({
placeholder: "Select Model",
tags: false,
maximumSelectionLength: 1
})
}
else
{
$(".js-tags").select2({
placeholder: "Enter Model",
tags: true,
maximumSelectionLength: 1
})
}
}
如您所见,如果用户选择 classID 为 1,我想禁用下拉列表的标记。但这根本行不通。我在开发者工具中也遇到了这个错误:
JavaScript 运行时错误:对象不支持属性或方法“select2”
我已经确保没有双 jquery 引用。完美使用 Select2 后为什么会出现错误,这是没有道理的。
补充:
这里是触发 ChangeModelNum 的代码:
<div class="col-md-2">
@Html.DropDownListFor(model => model.classnum, Model.classL, "Select Class", new { @onchange = "javascript:ChangeModelNum(this.value);", @class = "form-control" })
</div>
感谢您的帮助!
【问题讨论】:
标签: javascript asp.net-mvc select2