Динамическое добавление и удаление полей (input) формы

Всем привет. Помогите пожалуйста реализовать динамику следующего описания. Есть страничка на ней можно добавлять удалять поля ввода. По умолчанию есть одно поле, возле него кнопка (+) добавить еще одно поле. После того как поле добавилось, курсор должен установиться в новое поле, и напротив нового поля должны появиться кнопки (-)(+). Если кликаем минус возле второго поля, удаляется второе поле, если кликаем (+) появляется третье поле, курсор ставится в третье поле, рядом с ним тоже кнопки (-)(+). Если кликаем (-) рядом с третьим полем удаляется третье поле. Если кликаем (+) появляется блок с надписью для дальнейшего добавления данных нужно авторизоваться. Если кликаем по (-) возле третьего поля, третье поле исчезает, так же исчезает блок с авторизацией.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>main page</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<header>
	 <nav>
    </nav>
</header>
<main>
<div class="block-inputs">
<form name="" method="post" action="">
  <p><b>Данные</b><input type="text" size="40"><a class="del_b" href="">-</a><a class="add_b" href="">+</a>
   
  </p>

  
 </form>
</div>
<div class="err">
для дальнейшего добавления данных нужно авторизироваться
</div>
</main>
</body>
<style type="text/css">
.block-inputs {
    margin: 30px auto;
    width: 90%;
    text-align: center
}
  .add_b{
    background: green;
    padding: 5px;
    color: #fff;
    text-decoration: none;
    font-weight: bold;
    margin: 0 10px;

}
  .del_b{
    background: red;
    padding: 5px 7px;
    color: #fff;
    text-decoration: none;
    font-weight: bold;
    margin: 0 10px;
}
.err{
      margin: 0 auto;
    width: 90%;
    text-align: center;
    background: red;
    color: #fff;
    height: 50px;
}
* {
   margin:0;
   padding:0;
}
input[type="text"] {
   border: 1px solid #cccccc;
   border-radius: 3px;
   -webkit-border-radius: 3px;
   -moz-border-radius: 3px;
   -khtml-border-radius: 3px;
   background: #ffffff !important;
   outline: none;
   height: 24px;
   width: 120px;
   color: #cccccc;
   font-size: 11px;
   font-family: Tahoma;
}
input[type="text"]:focus {
  color: #000000;
  border: 1px solid #000000
}
</style>
</html>


Ответы (1 шт):

Автор решения: frozencoast

Попробуйте это:

// Добавление блока
$('.block-inputs').on('click', '.add_b', function(e) {
  e.preventDefault();
  let $parent = $(this).parent();
  let $clone = $parent.clone();
  $parent.after($clone);
  $clone.find('input').val('').focus();
});

// Удаление блока
$('.block-inputs').on('click', '.del_b', function(e) {
  e.preventDefault();
  let $parent = $(this).parent();
  // Предотвращение удаления единственного блока
  if ($parent.siblings().length) {
    $parent.remove();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="block-inputs">
  <form name="" method="post" action="">
    <p>
      <b>Данные</b>
      <input type="text" size="40">
      <a class="del_b" href="">-</a>
      <a class="add_b" href="">+</a>
    </p>
  </form>
</div>

→ Ссылка