tailwind css simple tags input examples

In this tutorial, we will create tailwind css tags input, tailwind tags input with search dropdown, tailwind tags input with Tagify(tag.js) example with Tailwind CSS.

How to install & setup Tailwind CSS v3


Example 1

Tailwind CSS simple tags input.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Tailwind CSS Tags Input Example</title>
    <link
      href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css"
      rel="stylesheet"
    />
    <link
      href="https://unpkg.com/@yaireo/tagify/dist/tagify.css"
      rel="stylesheet"
      type="text/css"
    />
  </head>

  <body>
    <div class="flex items-center justify-center mt-20">
      <div class="w-1/2">
        <label for="Tags" class="block mb-2 text-sm text-gray-600">Tags</label>
        <input
          type="text"
          class="w-full px-4 py-6 text-sm border border-gray-300 rounded outline-none"
          name="tags"
          value="Alpine Js, Tailwind CSS, PHP8.0"
          autofocus
        />
      </div>
    </div>
    <script src="https://unpkg.com/@yaireo/tagify"></script>
    <script src="https://unpkg.com/@yaireo/tagify/dist/tagify.polyfills.min.js"></script>
    <script>
      // The DOM element you wish to replace with Tagify
      var input = document.querySelector('input[name=tags]');
      // initialize Tagify on the above input node reference
      new Tagify(input);
    </script>
  </body>
</html>
tailwind tag input

tailwind tag input


Example 2

Tailwind CSS multiple select tags with dropdown also suggestion tags name.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Tailwind CSS Tags Input Example</title>
    <link
      href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css"
      rel="stylesheet"
    />
    <link
      href="https://unpkg.com/@yaireo/tagify/dist/tagify.css"
      rel="stylesheet"
      type="text/css"
    />
  </head>

  <body>
    <div class="flex items-center justify-center mt-20">
      <div class="w-1/2">
        <label for="Tags" class="block mb-2 text-sm text-gray-600">Tags</label>
        <input
          type="text"
          class="w-full px-4 py-6 text-sm border border-gray-300 rounded outline-none "
          name="tags"
          value="Tailwind CSS, AlpineJs"
          autofocus
        />
      </div>
    </div>
    <script src="https://unpkg.com/@yaireo/tagify"></script>
    <script src="https://unpkg.com/@yaireo/tagify/dist/tagify.polyfills.min.js"></script>
    <script>
      // The DOM element you wish to replace with Tagify
      var input = document.querySelector('input[name=tags]');
      var tagify = new Tagify(input, {
        addTagOnBlur: false,
        dropdown: {
          enabled: 0,
          closeOnSelect: false,
        },
        whitelist: [
          'Java',
          'Python',
          'PHP',
          'Ruby',
          'NodeJs',
          'DotNet',
          'Laravel',
        ],
        templates: {
          dropdownItem(item) {
            return `<div ${this.getAttributes(item)}
                    class='tagify__dropdown__item ${item.class ? item.class : ''}'
                    tabindex="0"
                    role="option">
            ${item.value}
            <button tabindex="0" data-value="${
              item.value
            }" class="ml-4 text-red-800">Remove</button>
          </div>`;
          },
        },
        hooks: {
          suggestionClick(e) {
            var isAction = e.target.classList.contains('removeBtn'),
              suggestionElm = e.target.closest('.tagify__dropdown__item'),
              value = suggestionElm.getAttribute('value');

            return new Promise(function (resolve, reject) {
              if (isAction) {
                removeWhitelistItem(value);
                tagify.dropdown.refilter.call(tagify);
                reject();
              }
              resolve();
            });
          },
        },
      });

      function removeWhitelistItem(value) {
        var index = tagify.settings.whitelist.indexOf(value);
        if (value && index > -1) tagify.settings.whitelist.splice(index, 1);
      }
    </script>
  </body>
</html>
tailwind tag input v2

tailwind tag input v2

Example 3

Tailwind CSS tags input with before remove tag warning message.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Tailwind CSS Tags Input Example</title>
    <link
      href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css"
      rel="stylesheet"
    />
    <link
      href="https://unpkg.com/@yaireo/tagify/dist/tagify.css"
      rel="stylesheet"
      type="text/css"
    />
  </head>

  <body>
    <div class="flex items-center justify-center mt-20">
      <div class="w-1/2">
        <label for="Tags" class="block mb-2 text-sm text-gray-600">Tags</label>
        <input
          type="text"
          class="w-full px-4 py-6 text-sm border border-gray-300 rounded outline-none "
          name="tags"
          value="Tailwind CSS, AlpineJs"
          autofocus
        />
      </div>
    </div>
    <script src="https://unpkg.com/@yaireo/tagify"></script>
    <script src="https://unpkg.com/@yaireo/tagify/dist/tagify.polyfills.min.js"></script>
    <script>
      // The DOM element you wish to replace with Tagify
      var input = document.querySelector('input[name=tags]');
      var tagify = new Tagify(input, {
        keepInvalidTags: true,
        whitelist: ['Java', 'Python', 'PHP', 'Ruby'],
        hooks: {
          /**
           * Removes a tag
           * @param  {Array}  tags [Array of Objects [{node:..., data:...}, {...}, ...]]
           */
          beforeRemoveTag: (tags) => {
            tags[0].node.classList.add('tagify__tag');

            return new Promise((resolve, reject) => {
              confirm(`Are you sure to delete ${tags[0].data.value} tag ?`)
                ? resolve()
                : reject();
            });
          },
        },
      });
    </script>
  </body>
</html>
tailwind tag v3

tailwind tag v3


Read Also

Tailwind CSS 3 FAQ Accordion UI Example

Tailwind CSS 3 Alert Message Example

Tailwind CSS 3 Avatars Example

Tailwind CSS 3 Badges Example

Tailwind CSS 3 Breadcrumb Example

Tailwind CSS Gradient Button Example

Tailwind CSS 3D Button Example

Tailwind CSS Loading Button Example

Tailwind CSS v3 Cards Examples

Tailwind CSS Checkbox Form Examples

Tailwind CSS Dropdowns (Menu) on Hover Example

Tailwind CSS Multiselect Dropdown Example

How to use dark mode toggle switch in Tailwind CSS 3

How to use @apply directive in Tailwind CSS

Tailwind CSS sticky header & fixed navbar example

Tailwind CSS Navbar UI Example

Tailwind CSS 3 Login Page UI Example

Tailwind CSS Login Modal Example

Tailwind CSS Search Examples

Tailwind CSS 3 Overlay Image Example

Tailwind CSS Thank You Page Example

Tailwind CSS Timeline UI Example

Tailwind CSS Responsive Footer Section Example

Tailwind CSS Background Image Header Example