JSFiddle - React, Tailwind, and code Playground
by pxfunc
HTML
<div class="jobs search mainbar">
<form class="nice" method="GET" action="/search/">
<div>
<input type="hidden" name="ct" value="{{ query }}" />
<div class="input-group">
<div class="tag tag-input"></div>
<input name="q" id="search" class="input-text" multiple="multiple" placeholder="Search..." autocomplete="on" value="" />
</div>
<button class="btn btn-success" type="submit">Search</button>
</div>
</form>
<div class="keywords">
<span style="color:#43474B; font-size: 12px;">Recent Searches:</span>
<div class="left" style="width:80%">
<div class="tag">
<a href="#">Example</a>
</div>
<div class="tag">
<a href="#">Test</a>
</div>
<div class="tag">
<a href="#">Query</a>
</div>
</div>
</div>
</div>
CSS
body, input {font-family:arial;}
.input-group {position:relative;display:inline-block;overflow:hidden;}
.tag-input {
position:absolute;
top:9px;
left:2px;
z-index:-1;
color:#F4F4F4!important;
}
.input-text{
word-spacing:13px;
background:transparent;
border:1px solid #ddd;
padding: 10px 12px;
outline: none !important;
box-shadow: inset 0 3px 8px -6px #333;
-moz-box-shadow: inset 0 3px 8px -6px #333333;
-webkit-box-shadow: inset 0 3px 8px -6px #333;
width:250px;
min-width:250px;
}
.keywords{
margin-top: 5px;
}
.tag{
display: inline-block;
}
.input-text, .tag a {
font-size: 14px;
line-height: 13px;
color:#333;
}
.tag a{
cursor: pointer;
text-decoration: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-moz-background-clip: padding;
-webkit-background-clip: padding-box;
background-color: #E4E4E4;
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #F4F4F4), color-stop(50%, #F0F0F0), color-stop(52%, #E8E8E8), color-stop(100%, #EEE));
background-image: -webkit-linear-gradient(top, #F4F4F4 20%, #F0F0F0 50%, #E8E8E8 52%, #EEE 100%);
background-image: -moz-linear-gradient(top, #F4F4F4 20%, #F0F0F0 50%, #E8E8E8 52%, #EEE 100%);
background-image: -o-linear-gradient(top, #F4F4F4 20%, #F0F0F0 50%, #E8E8E8 52%, #EEE 100%);
background-image: -ms-linear-gradient(top, #F4F4F4 20%, #F0F0F0 50%, #E8E8E8 52%, #EEE 100%);
background-image: linear-gradient(top, #F4F4F4 20%, #F0F0F0 50%, #E8E8E8 52%, #EEE 100%);
-webkit-box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
-moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
border: 1px solid #AAA;
padding: 3px 5px 3px 5px;
...
JavaScript
var $input = $('#search'),
$tagInput = $('.tag-input');
$input.bind('input', function() {
var inputValues = $input.val().trim().split(' ');
console.log(inputValues);
$tagInput.html('');
if ($input.val().trim().length > 0) {
for (var i in inputValues) {
$tagInput.append('<a>' + inputValues[i] + '</a>');
}
}
$input.width($tagInput.width());
});
$('.keywords .tag').click(function(e){
e.preventDefault();
var $this = $(this);
$input.val(($input.val() + ' ' + $this.text().trim()).trim());
$input.trigger('input');
});