javascript - 将垂直标签添加到 jquery.repeater 字段

标签 javascript jquery css jquery.repeater

我正在使用 jquery.repeater字段并希望在重复的字段顶部添加标签。

请参阅下面我的最小可行示例:

$(document).ready(function() {
  'use strict';

  $('.repeater').repeater({
    defaultValues: {
      'textarea-input': 'foo',
      'text-input': 'bar',
      'select-input': 'B',
      'checkbox-input': ['A', 'B'],
      'radio-input': 'B'
    },
    show: function() {
      $(this).slideDown();
    },
    hide: function(deleteElement) {
      if (confirm('Are you sure you want to delete this element?')) {
        $(this).slideUp(deleteElement);
      }
    },
    ready: function(setIndexes) {

    }
  });

  window.outerRepeater = $('.outer-repeater').repeater({
    isFirstItemUndeletable: true,
    defaultValues: {
      'text-input': 'outer-default'
    },
    show: function() {
      console.log('outer show');
      $(this).slideDown();
    },
    hide: function(deleteElement) {
      console.log('outer delete');
      $(this).slideUp(deleteElement);
    },
    repeaters: [{
      isFirstItemUndeletable: true,
      selector: '.inner-repeater',
      defaultValues: {
        'inner-text-input': 'inner-default'
      },
      show: function() {
        console.log('inner show');
        $(this).slideDown();
      },
      hide: function(deleteElement) {
        console.log('inner delete');
        $(this).slideUp(deleteElement);
      }
    }]
  });
});
<form action="echo.php" class="repeater" enctype="multipart/form-data">
  <label>Product Name</label>
  <label>Price</label>
  <label>Date</label>
  <label>Description</label>
  <div data-repeater-list="group-a">
    <div data-repeater-item>
      <input name="untyped-input" value="A" />

      <input type="text" name="text-input" value="A" />

      <input type="date" name="date-input" />

      <textarea name="textarea-input">A</textarea>

    </div>
    <input data-repeater-create type="button" value="Add" />
  </div>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.repeater/1.2.1/jquery.repeater.js"></script>

我希望我的最终结果如下所示:

enter image description here

如您所见,标签就在重复字段的正上方。

对我做错了什么有什么建议吗?

感谢您的回复!

最佳答案

您需要为元素设置相同的样式。

$(document).ready(function() {
  'use strict';

  $('.repeater').repeater({
    defaultValues: {
      'textarea-input': 'foo',
      'text-input': 'bar',
      'select-input': 'B',
      'checkbox-input': ['A', 'B'],
      'radio-input': 'B'
    },
    show: function() {
      $(this).slideDown();
    },
    hide: function(deleteElement) {
      if (confirm('Are you sure you want to delete this element?')) {
        $(this).slideUp(deleteElement);
      }
    },
    ready: function(setIndexes) {

    }
  });

  window.outerRepeater = $('.outer-repeater').repeater({
    isFirstItemUndeletable: true,
    defaultValues: {
      'text-input': 'outer-default'
    },
    show: function() {
      console.log('outer show');
      $(this).slideDown();
    },
    hide: function(deleteElement) {
      console.log('outer delete');
      $(this).slideUp(deleteElement);
    },
    repeaters: [{
      isFirstItemUndeletable: true,
      selector: '.inner-repeater',
      defaultValues: {
        'inner-text-input': 'inner-default'
      },
      show: function() {
        console.log('inner show');
        $(this).slideDown();
      },
      hide: function(deleteElement) {
        console.log('inner delete');
        $(this).slideUp(deleteElement);
      }
    }]
  });
});
label,input,textarea{display:inline-block; width:150px;}
label{border:solid 2px rgba(0,0,0,0);}
<form action="echo.php" class="repeater" enctype="multipart/form-data">
  <label>Product Name</label>
  <label>Price</label>
  <label>Date</label>
  <label>Description</label>
  <div data-repeater-list="group-a">
    <div data-repeater-item>
      <input name="untyped-input" value="A" />

      <input type="text" name="text-input" value="A" />

      <input type="date" name="date-input" />

      <textarea name="textarea-input">A</textarea>

    </div>
    <input data-repeater-create type="button" value="Add" />
  </div>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.repeater/1.2.1/jquery.repeater.js"></script>

关于javascript - 将垂直标签添加到 jquery.repeater 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48180796/

相关文章:

html - 修复了菜单问题,修复后菜单垂直堆叠

javascript - 我可以使用 JSX 在 React 中使用 HTML 标记执行 Array.join() 吗?

javascript - HTML - 单击图像时如何播放和暂停音频?

javascript - 如何在 ReactJs 中渲染选择选项的 onChange 表

javascript - 如果有子元素,则删除元素中的特定范围 - jquery

html - 叠加多个图像

javascript - jQuery .find() 返回 "div"的值,但不返回 "main"元素的值

javascript - AngularJS 路由, Controller 不执行

javascript - ZF2 jQuery 日期选择器无法在 ajax 对话框中工作

html - `:after` - 伪类不适用于 `input` 元素