標籤輸入框 - Tag Inputs
Valid keywords are: apple, lemon, love
1
2
<p>Valid keywords are: apple, lemon, love</p>
<div data-tag-input class="tag-input"></div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
export default function bindTagInput() {
const { TagInput } = window.beyond
const fruits = ['apple', 'lemon', 'love']
const tagInputs = Array.from(document.querySelectorAll('[data-tag-input]'))
.map(dom => {
const tagInput = new TagInput(dom, {
suggest(v) {
if (v) {
const fruid = fruits.find(f => f.startsWith(v))
return fruid
}
return ''
},
validate(v) {
if (fruits.includes(v)) {
return { isTag: true, classname: 'tag-extra' }
}
return { isTag: false }
},
change(res) {
console.log('change', res)
}
})
return tagInput
})
return function unbindTagInput() {
tagInputs.forEach(input => input.destroy())
}
}
Tag Input
constructor
名稱 | 型別 | 說明 | 預設值 |
---|---|---|---|
dom | HTMLElement | 需要設定成 TagInput 的元素 | |
options | object | 選項 | {} |
options.suggest | function | async function | 是否要顯示輸入提示文字,有指定這個方法需回傳提示文字字串 | () => () |
options.validate | function | async function | 驗證輸入的字串是否可以變為標籤,回傳物件 { isTag: Boolean },如果有指定標籤的 classname 可以回傳 { isTag: Boolean, classname: String } | () => ({ isTag: true }) |
options.change | function | 標籤有異動時會呼叫這個 callback |
addTag
新增標籤
destroy
移除 TagInput 產生的 dom 元素與 event listeners