Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно склонировать блок, если инпуты в блоке находится в фокусе (https://javascript.ru/forum/dom-window/78994-kak-pravilno-sklonirovat-blok-esli-inputy-v-bloke-nakhoditsya-v-fokuse.html)

kos0760 03.12.2019 13:49

Как правильно склонировать блок, если инпуты в блоке находится в фокусе
 
Добрый день!

У формы есть блок .row с двумя инпутами (ширина и высота). Необходимо, чтобы когда любой из input последней строки .row находится в фокусе, внизу появлялся клон блока .row

Пример здесь https://nebo-skinali.ru/price.php, а именно, где задаются размеры панели в калькуляторе.

Я попытался сделать что-то подобное https://jsfiddle.net/kos0760/8fp0xvy2/41/
Строки клонируются, но только тогда, когда в фокусе находятся инпуты первой строки, а не последней.

ksa 03.12.2019 14:04

Цитата:

Сообщение от kos0760
Строки клонируются, но только тогда, когда в фокусе находятся инпуты первой строки, а не последней.

На что подвешено событие - на том оно и происходит... ;)

Как вариант:
- После клонирования убрать обработчики событий на "старых" элементах
- Повесить обработчики событий на "новые" элементы

рони 03.12.2019 20:36

добавить блок по фокусу на последнем элементе
 
kos0760,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
  <style type="text/css">
.row {
  margin-top: 30px;
}

form{
   counter-reset: num;
}
form .col-form-label span:after{
   counter-increment: num ;
   content:  counter(num);

}
form .panels:last-of-type input{
    background-color: #F0E68C;
}

  </style>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script>
jQuery(function($) {
$('form').on('focus', '.panels:last', function() {
   $(this).clone().insertAfter(this)
})
});
  </script>


</head>

<body>

<div class="container">
  <form>
  <div class="row panels">
    <div class="col-2">
      <label for="staticEmail" class="col-form-label">Панель №<span></span></label>
    </div>
    <div class="col">
      <input type="text" class="form-control" placeholder="Ширина">
    </div>
    <div class="col">
      <input type="text" class="form-control" placeholder="Высота">
    </div>
  </div>
</form>
</div>

</body>

</html>

kos0760 03.12.2019 23:08

рони,
Спасибо!


Часовой пояс GMT +3, время: 07:39.