如何使用多个参数过滤 select2 下拉列表
How to filter select2 dropdown with multiple parameters
我使用了 select2 类型下拉菜单并绑定了 value-text 对,它正在根据 (tenancyname) text 如下所示。
<li class="dropdown" id="liTenancy" style="margin-top: 4px; min-width: 250px !important;">
<select class="form-control select2me" data-placeholder="Select..." style="white-space: nowrap;">
@foreach (var Tenancy in Entity)
{
<option @(SelectedTenancy == Tenancy.TenancyId ? "selected=\"selected\"" : "") value="@Tenancy.TenancyId">
<a class="optionTenancy" href="javascript:void(0);" id="@Tenancy.TenancyId">@Tenancy.TenancyName</a>
</option>
}
</select>
</li>
现在我想用 tenancyname(文本)或 tenancyid(值) 来过滤这个列表(用户可以同时使用这两个来过滤列表)然后我如何自定义 js 而不做它与远程调用??
感谢 kevin 的建议,我找到了以下解决方案,对其他任何用户都有帮助
我已经将 id 放在 value 属性中,将 guid 放在选项标签的 alt 属性中,并使用自定义匹配器,如下所示
$('select.select2me').select2({
placeholder: "Select",
allowClear: true,
matcher: function (term, text, opt) {
return text.toUpperCase().indexOf(term.toUpperCase()) >= 0
|| opt.attr("alt").toUpperCase().indexOf(term.toUpperCase()) >= 0
|| opt.attr("value").toUpperCase().indexOf(term.toUpperCase()) >= 0;
}
});
我使用了 select2 类型下拉菜单并绑定了 value-text 对,它正在根据 (tenancyname) text 如下所示。
<li class="dropdown" id="liTenancy" style="margin-top: 4px; min-width: 250px !important;">
<select class="form-control select2me" data-placeholder="Select..." style="white-space: nowrap;">
@foreach (var Tenancy in Entity)
{
<option @(SelectedTenancy == Tenancy.TenancyId ? "selected=\"selected\"" : "") value="@Tenancy.TenancyId">
<a class="optionTenancy" href="javascript:void(0);" id="@Tenancy.TenancyId">@Tenancy.TenancyName</a>
</option>
}
</select>
</li>
现在我想用 tenancyname(文本)或 tenancyid(值) 来过滤这个列表(用户可以同时使用这两个来过滤列表)然后我如何自定义 js 而不做它与远程调用??
感谢 kevin 的建议,我找到了以下解决方案,对其他任何用户都有帮助
我已经将 id 放在 value 属性中,将 guid 放在选项标签的 alt 属性中,并使用自定义匹配器,如下所示
$('select.select2me').select2({
placeholder: "Select",
allowClear: true,
matcher: function (term, text, opt) {
return text.toUpperCase().indexOf(term.toUpperCase()) >= 0
|| opt.attr("alt").toUpperCase().indexOf(term.toUpperCase()) >= 0
|| opt.attr("value").toUpperCase().indexOf(term.toUpperCase()) >= 0;
}
});