高级元素

AdminLTE 有意不捆绑表单控件。 本页面上的控件使用了推荐的第三方集成—— Tom Select 和 Flatpickr. 查看 推荐集成 页包含完整列表及安装代码片段。
Tom Select
开始输入即可筛选列表;× 按钮 用来清除选择(clear_button)。
输入以筛选,按 Enter 创建新标签,使用 × 按钮移除标签。
背后是一个模拟接口,挂着 72 条记录。 输入做了防抖处理(loadThrottle), 过期的请求会用 AbortController 取消掉, 滚动到列表底部时会自动加载下一页 (virtual_scroll)。
Flatpickr
选择一个开始日期,然后选择一个结束日期。
来自 Select2?

下拉菜单2 目前仍在维护,但它依然是个 jQuery 插件 — 没有不依赖 jQuery 的构建版本。 Tom Select 能覆盖同样的功能集, 体积大约只有 20 kB gzip, 而 Select2 算上 jQuery 之后大约是 ~50 kB。 两者的 API 几乎可以一一对应:

将 Select2 的选项和方法映射到其 Tom Select 对应的版本
下拉菜单2 Tom Select
$("#x").select2() new TomSelect("#x")
tags: true create: true
allowClear: true plugins: ["clear_button"]
closeOnSelect: false closeAfterSelect: false
maximumSelectionLength: 3 maxItems: 3
minimumInputLength: 2 shouldLoad: (q) => q.length >= 2
ajax: { url, delay: 250 } load(query, callback) + loadThrottle: 250
ajax.processResults valueField / labelField / searchField
无限滚动 (pagination.more) plugins: ["virtual_scroll"] + setNextUrl()
templateResult / templateSelection render: { option, item }
dropdownParent: $("#modal") 无需——下拉菜单以内联方式显示
$("#x").val("2").trigger("change") ts.setValue("2")
$("#x").val() ts.getValue()
.on("select2:select", fn) ts.on("item_add", fn)
.on("change", fn) ts.on("change", fn)
$("#x").select2("open") ts.open()
$("#x").prop("disabled", true) ts.disable()
$("#x").select2("destroy") ts.destroy()
$("#x").empty().select2({ data }) ts.clearOptions(); ts.addOptions(data)