LoginSignup
7
4

More than 3 years have passed since last update.

[JavaScript] いつものタグ入力UIを、少し簡単にするTagify

Last updated at Posted at 2021-03-29

Tagify

2021年のトレンドになっているらしいのでやってみた。

ドキュメント

公式

GitHub

サンプル

See the Pen Tagify by ハタユウジ@コーポレートエンジニア (@shikumiya_hata) on CodePen.

html
<p>
  <label for='tags'>1. テキストボックス内にタグ</label>
  <input id="tags" name='tags' value='javascript, ライブラリ' autofocus>
</p>
<p>
  <label for='tagsOutside'>2. テキストボックスの外にタグ</label>
  <input id='tagsOutside' name='tags-outside' class='tagify--outside' value='javascript, ライブラリ' placeholder='タグを書くのもwhitelistから選択もできる'>
</p>
<p>
  <label for='tagCustom'>3. 見た目カスタマイズ</label>
  <input id="tagCustom" class='customLook' value='javascript, ライブラリ'><button type="button">+</button>
</p>

※CSSは長いので省略

js
/* 1. テキストボックス内にタグ */
var inputInside = document.querySelector('input[name=tags]');
var tagifyInside = new Tagify(inputInside);

/* 2. テキストボックスの外にタグ */
var inputOutside = document.querySelector('input[name=tags-outside]');
var tagifyOutside = new Tagify(inputOutside, {
  whitelist: ['javascript', 'js', 'ライブラリ', 'library'], //デフォルトで選択可能なタグ候補
  dropdown: {
    position: "input",
    enabled : 0 
  }
});

/* 3. 見た目カスタマイズ */
var inputCustomLook = document.querySelector('.customLook'),
    tagify = new Tagify(inputCustomLook, {
      dropdown : {
        position: 'text',
        enabled: 1
      }
    }),
    button = inputCustomLook.nextElementSibling;

button.addEventListener("click", onAddButtonClick)

// +ボタン押下時
function onAddButtonClick(){
    tagify.addEmptyTag() // 新しいタグを追加
}

ちなみに、valueを取り出すとこんな風になってます。

value
[
  {"value":"javascript"},
  {"value":"ライブラリ"}
]
7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4