Advertisement
kxxxl

Dynamic and custom inputs

Feb 13th, 2020
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.    <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7.    <title>Document</title>
  8. </head>
  9. <style>
  10.    form{width: 600px;
  11.    display: flex;
  12.    align-items: center;
  13.    flex-wrap: wrap;
  14. }
  15.    .input-box * {
  16.     box-sizing: border-box;
  17. }
  18.  
  19. .input-box {
  20.     position: relative;
  21.     display: flex;
  22.     align-items: center;
  23.   height: 65px;
  24.     width: 450px;
  25.     max-width: 100%;
  26.     border: 1px dashed #c4c4c4;
  27.     border-radius: 3px;
  28.     padding: 0 20px;
  29.     transition: 0.2s;
  30. }
  31.  
  32. .input-box.is-active {
  33.     background-color: rgba(0, 20, 20, 0.03);
  34. }
  35.  
  36. input[type="file"] {
  37.     position: absolute;
  38.     left: 0;
  39.     top: 0;
  40.     height: 100%;
  41.     width: 80%;
  42.     opacity: 0;
  43.     cursor: pointer;
  44. }
  45.  
  46. input[type="file"]:focus {
  47.     outline: none;
  48. }
  49.  
  50. .inf__btn {
  51.     display: inline-block;
  52.     border: 1px solid #c4c4c4;
  53.     border-radius: 3px;
  54.     padding: 5px 12px;
  55.     margin-right: 10px;
  56.     font-size: 10px;
  57.     text-transform: uppercase;
  58. }
  59.  
  60. .inf__hint {
  61.     flex: 1;
  62.     font-size: 11px;
  63.     white-space: nowrap;
  64.     overflow: hidden;
  65.     text-overflow: ellipsis;
  66. }
  67. .input-file-del{
  68.      
  69.       float:right;
  70.       box-sizing: border-box;
  71.       width: 53px;
  72.       height: 23px;
  73.       padding: 2px;
  74.       margin-right: 2px;
  75.       text-align: center;
  76.       border: 1px solid #adadad;
  77.       color: #7b7b7b;
  78.       cursor: pointer;
  79.       font-size: 12px;
  80.       vertical-align: middle;
  81.    }
  82. </style>
  83. <body>
  84.  
  85.    <form id="form">
  86.         <div class="input-box">
  87.          <span class="inf__btn">Przeglądaj</span>
  88.          <span class="inf__hint">nazwa przesłanego pliku</span>
  89.          <input type="file" name="files">
  90.          <div class="input-file-del " >Usuń <span>&#10006;</span></div>
  91.       </div>
  92.   </form>
  93.   <div class="add" onclick="addNew()">Add</div>
  94.    
  95.    <script>
  96. var max = 8; //maximum input
  97. var now = document.querySelectorAll('input[type="file"]');
  98. var counter = now.length;
  99. var box = document.querySelector('#form');
  100.  
  101.  
  102. function addNew(){
  103.    if (counter < max) {
  104.       var newFile = document.createElement('div');
  105.         newFile.setAttribute('class', 'input-box');
  106.         document.querySelector('#form').appendChild(newFile);
  107.    newFile.innerHTML = '<span class="inf__btn">Przeglądaj</span><span class="inf__hint">nazwa przesłanego pliku</span><input type="file" name="files"><div class="input-file-del remove" >Usuń <span>&#10006;</span></div>'
  108.    counter++;
  109.    } else {
  110.       console.log('błąd');
  111.       alert('Maksymalnie 8 plików');
  112.    }
  113. }
  114.  
  115. // remove
  116. box.addEventListener('click', removeItem);
  117. function removeItem(e){
  118.    if (e.target.classList.contains('remove')) {
  119.       let file = e.target.parentElement;
  120.       console.log(file);
  121.       box.removeChild(file);
  122.       counter--;    
  123.       }      
  124. }
  125.  
  126.  
  127.    </script>
  128. </body>
  129. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement