Textarea to Multiline control

How to use

<!-- Add textarea -->
<textarea class="form-control multiline-control"></textarea>

<!-- Include jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<!-- Include plugin file -->
<script src="js/multiline-control.min.js"></script>
<!-- Initialize plugin for .multiline-control class elements -->
<script>
   jQuery(function ($) {
      $('.multiline-control').multiline_control();
   });
</script>

Full options list (default values)

      $('.multiline-control').multiline_control({
         sortable: true,
         templateContainer: '<div class="multiline-control"></div>',
         templateAddBtn: '<a href="#" class="mc-add-btn btn btn-success btn"><i class="glyphicon glyphicon-plus"></i></a>',
         templateLine:
            '<div class="form-group mc-row">' +
               '<div class="input-group">' +
                  '{sorting_handle}' +
                  '<input type="text" class="form-control" name="{name}" value="{value}">' +
                  '<a href="#" class="input-group-addon btn btn-default btn-sm mc-remove-btn">' +
                     '<i class="glyphicon glyphicon-remove"></i>' +
                  '</a>' +
               '</div>' +
            '</div>',
         templateHandle: '<div class="input-group-addon mc-handle" style="cursor: move;"><i class="glyphicon glyphicon-move"></i></div>',
         templateSortablePlaceholder: '<div class="mc-sortable-placeholder form-group form-control" style="border: 1px dashed blue;"></div>',
         onChange: $.noop
      });

Validation support

This plugin supports vallidation based on https://jqueryvalidation.org/ with following settings:
$('#test_form').validate({
   onkeyup: function (element) { $(element).valid() },
   rules: {
      'emails_mc[]': 'email',
   },
   highlight: function(element) {
      $(element).closest('.form-group').addClass('has-error');
   },
   unhighlight: function(element) {
      $(element).closest('.form-group').removeClass('has-error');
   },
   errorElement: 'span',
   errorClass: 'help-block',
   errorPlacement: function(error, element) {
      if(element.parent('.input-group').length) {
         error.insertAfter(element.parent());
      } else {
         error.insertAfter(element);
      }
   },
});