JSFiddle - React, Tailwind, and code Playground

HTML

<div class="ui-widget">
  <label for="tags">Tag programming languages: </label>
  <input id="tags" size="50" />
  <span id="characterSpan" style="visibility: hidden;"></span>
</div>

CSS

#characterSpan{
    position: absolute;
    visibility: hidden; 
    display: block;
}
#tags{
    width:300px;
}

JavaScript

$(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme",
      "This",
      "is",
      "my",
      "long",
      "version"
    ];
    function split( val ) {
      return val.split( / \s*/ );
    }
    function extractLast( term ) {
      return split( term ).pop();
    }
 
    $( "#tags" )
      .bind( "keydown", function( event ) {
          //can also use this to track when user presses SPACE
        if(event.which===32)
               $('#characterSpan').html($(this).val());
        
        if ( event.keyCode === $.ui.keyCode.TAB &&
            $( this ).data( "autocomplete" ).menu.active ) {
          event.preventDefault();
        }
      })
      .autocomplete({
        minLength: 0,
        source: function( request, response ) {
          response( $.ui.autocomplete.filter(
            availableTags, extractLast( request.term ) ) );
        },
        focus: function() {
          return false;
        },
        select: function( event, ui ) {
          var terms = split( this.value );
          terms.pop();
          terms.push( ui.item.value );
          terms.push( "" );
          this.value = terms.join( " " );
          //when item selected, add current value to span
          $('#characterSpan').html($(this).val());
          return false;
        },
        open: function( event, ui ) {
            var span = $('#characterSpan');
            var width = span.width();
            width > $('#tags').width() ? 
            width = parseInt($('#tags').position().left + $('#tags').width()) : 
            width = parseInt($('#tags').position().left + width);
            
           ...