index.html 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Repeater</title>
  6. <title>jquery.repeater</title>
  7. <style>
  8. html, body {
  9. font-family: Helvetica, Arial, sans-serif;
  10. color: rgb(80, 80, 80);
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <h2>Repeater</h2>
  16. <form action="echo.php" class="repeater" enctype="multipart/form-data">
  17. <div data-repeater-list="group-a">
  18. <div data-repeater-item>
  19. <input name="untyped-input" value="A"/>
  20. <input type="text" name="text-input" value="A"/>
  21. <input type="date" name="date-input"/>
  22. <textarea name="textarea-input">A</textarea>
  23. <input type="radio" name="radio-input" value="A" checked/>
  24. <input type="radio" name="radio-input" value="B"/>
  25. <input type="checkbox" name="checkbox-input" value="A" checked/>
  26. <input type="checkbox" name="checkbox-input" value="B"/>
  27. <select name="select-input">
  28. <option value="A" selected>A</option>
  29. <option value="B">B</option>
  30. </select>
  31. <select name="multiple-select-input" multiple>
  32. <option value="A" selected>A</option>
  33. <option value="B" selected>B</option>
  34. </select>
  35. <input data-repeater-delete type="button" value="Delete"/>
  36. </div>
  37. <div data-repeater-item>
  38. <input name="untyped-input" value="A"/>
  39. <input type="text" name="text-input" value="B"/>
  40. <input type="date" name="date-input"/>
  41. <textarea name="textarea-input">B</textarea>
  42. <input type="radio" name="radio-input" value="A" />
  43. <input type="radio" name="radio-input" value="B" checked/>
  44. <input type="checkbox" name="checkbox-input" value="A"/>
  45. <input type="checkbox" name="checkbox-input" value="B" checked/>
  46. <select name="select-input">
  47. <option value="A">A</option>
  48. <option value="B" selected>B</option>
  49. </select>
  50. <select name="multiple-select-input" multiple>
  51. <option value="A" selected>A</option>
  52. <option value="B" selected>B</option>
  53. </select>
  54. <input data-repeater-delete type="button" value="Delete"/>
  55. </div>
  56. </div>
  57. <input data-repeater-create type="button" value="Add"/>
  58. </form>
  59. <h2>Nested</h2>
  60. <form action="echo.php" class="outer-repeater">
  61. <div data-repeater-list="outer-group" class="outer">
  62. <div data-repeater-item class="outer">
  63. <input type="text" name="text-input" value="A" class="outer"/>
  64. <input data-repeater-delete type="button" value="Delete" class="outer"/>
  65. <div class="inner-repeater">
  66. <div data-repeater-list="inner-group" class="inner">
  67. <div data-repeater-item class="inner">
  68. <input type="text" name="inner-text-input" value="B" class="inner"/>
  69. <input data-repeater-delete type="button" value="Delete" class="inner"/>
  70. </div>
  71. </div>
  72. <input data-repeater-create type="button" value="Add" class="inner"/>
  73. </div>
  74. </div>
  75. </div>
  76. <input data-repeater-create type="button" value="Add" class="outer"/>
  77. </form>
  78. <script src="jquery-3.7.0.min.js"></script>
  79. <script src="jquery.repeater.js"></script>
  80. <script>
  81. $(document).ready(function () {
  82. 'use strict';
  83. $('.repeater').repeater({
  84. defaultValues: {
  85. 'textarea-input': 'foo',
  86. 'text-input': 'bar',
  87. 'select-input': 'B',
  88. 'checkbox-input': ['A', 'B'],
  89. 'radio-input': 'B'
  90. },
  91. show: function () {
  92. $(this).slideDown();
  93. },
  94. hide: function (deleteElement) {
  95. if(confirm('Are you sure you want to delete this element?')) {
  96. $(this).slideUp(deleteElement);
  97. }
  98. },
  99. ready: function (setIndexes) {
  100. }
  101. });
  102. window.outerRepeater = $('.outer-repeater').repeater({
  103. isFirstItemUndeletable: true,
  104. defaultValues: { 'text-input': 'outer-default' },
  105. show: function () {
  106. console.log('outer show');
  107. $(this).slideDown();
  108. },
  109. hide: function (deleteElement) {
  110. console.log('outer delete');
  111. $(this).slideUp(deleteElement);
  112. },
  113. repeaters: [{
  114. isFirstItemUndeletable: true,
  115. selector: '.inner-repeater',
  116. defaultValues: { 'inner-text-input': 'inner-default' },
  117. show: function () {
  118. console.log('inner show');
  119. $(this).slideDown();
  120. },
  121. hide: function (deleteElement) {
  122. console.log('inner delete');
  123. $(this).slideUp(deleteElement);
  124. }
  125. }]
  126. });
  127. });
  128. </script>
  129. </body>
  130. </html>