TagInput 标签快捷插入
输入框 + 标签快捷栏:点击标签自动填入输入框,已插入的标签自动隐藏,删除后重现;text-layout 驱动展开/收起;零依赖 · 纯 TypeScript · 全键盘可用
基础用法
点击标签、移除标签或手动输入,操作将记录在此
受控模式
输入值:
(空) · 可用标签:HTML, CSS, JavaScript自定义格式
展开 / 收起 · @qingwu-ui/text-layout
chip-in-input 模式
已选:
前端, 组件库 · 已选以 chip 内嵌输入框, × 删除即移除;草稿经 Enter / 逗号 / 失焦提交(maxTags: 5上限,超出保留草稿);下方快捷栏为可用标签建议回车创建标签
在输入框输入文本并按
Enter,即作为新标签加入快捷栏(已存在则忽略并清空输入)import { TagInput } from "@qingwu-ui/tag-input";
import "@qingwu-ui/tag-input/style.css";
// 基础用法:点击标签填入输入框(逗号分隔),
// 已插入的标签从快捷栏消失,删除后重现
const ti = new TagInput(el, {
defaultTags: ["React", "TypeScript", "CSS"],
onChange: (v) => save(v),
});
// 受控模式
const ti2 = new TagInput(el2, {
value, tags, // 受控
onChange: (v) => { value = v; ti2.update({ value }); },
onTagsChange: (t) => { tags = t; ti2.update({ tags }); },
});
// 自定义格式:插入 # 前缀,parseTags 同步解析
const ti3 = new TagInput(el3, {
formatInsert: (tag) => "#" + tag,
parseTags: (v) => v.split(",").map((s) => s.trim().replace(/^#/, "")),
});
// 展开 / 收起:maxRows 限制标签栏行数(layoutChips 计算)
const ti4 = new TagInput(el4, { defaultTags: MANY_TAGS, maxRows: 1 });
// 回车创建:输入文本按 Enter 加入快捷栏
const ti5 = new TagInput(el5, {
defaultTags: ["前端"],
allowEnterCreate: true,
onTagsChange: (t) => save(t),
});
// 实例 API
ti.insertTag("Vue"); // 程序化插入
ti.removeTag("React"); // 从快捷栏移除
ti.createTag("Svelte"); // 程序化创建新标签
ti.destroy(); // 销毁