2018/09/12 Tag Input 元件試做

2018/09/12 Tag Input 元件試做

by wllai2001

HTML

<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- 
  2018/09/12 Tag Input 元件試做
  Bootstrap docs: https://getbootstrap.com/docs
-->
<div class="container wapper">


	<div class="taginput">
		<div class="function">
		
		  <input type="text" placeholder="語言名稱(如:英語)"/>
		  
		  <select>
			<option>略懂</option>
			<option selected>中等</option>
			<option>精通</option>
		  </select>
		  
		  <div class="btn btn-primary btn-addtag">新增</div>
		
		</div>
		
		<div class="tagspool">
		
		  
		
		</div>
		
		<div class="TagTemplate">
			<div class="tagcontext"></div>
			<div class="tagremove-btn">
        <span class="glyphicon glyphicon-ok-circle" aria-hidden="true"></span>x</div>
		</div>

	</div>

  
  
</div>

<input type="text" class="data-tags"/>

CSS

.wapper{
  padding:15px;
}

.taginput{
  padding:5px;
  border:1px solid #ccc;
  border-radius:5px;
}

.tagspool{
  margin-top:5px;
  padding:5px;
  border:1px solid #ccc;
  border-radius:5px;
  height:70px;
}

.taginput select, .taginput input{
  height:32px;
  line-height:16px;
}

.taginput .btn{
  height:30px;
  line-height:14px;
}

.taginput input{  
  margin-top:1px;
}

.taginput select{  
  top:-1px;
  position: relative;
}

.taginput .btn{
  margin-top:-7px;
}

.tagitem{
  background: #009688;
  color: white;
  font-family: 微軟正黑體,sans-serif;
  padding: 5px;
  display: inline-block;
  border-radius: 5px;
}

.tagcontext{
  display: inline-block;
}

.tagremove-btn{
  width: 20px;
  height: 20px;
  display: inline-block;
  margin-left:5px;
}

JavaScript

$(".taginput .btn-addtag").on("click",function(){
	var $this = $(this);
	var $TagsPool = $(".tagspool");
	var $langType = $this.siblings("input");
	var $langLv = $this.siblings("select");
	var context = $langType.val() + " - " + $langLv.val();
	$langType.val("");
	$langLv.val("中等");

	var $tag = $(".TagTemplate").clone().removeClass("TagTemplate").addClass("tagitem");
	$tag.find(".tagcontext").html(context).end().appendTo($TagsPool);
  
  $('.tagitem .tagremove-btn').on('click',function(){removetag($(this));});
	
});
function removetag($this){
  console.log("sss");
    var $tagsdata = $(".data-tags");

    var target = $this.siblings("div").html();

    var data = ($tagsdata.val()+"").split(',');
    $.each(data, function (idx) {
        if (this == target) {
            data.splice(idx, 1);
            return false;
        }
    });

    $tagsdata.val(data.join(","));
    $this.parent().remove();
}