创建可重复 表单组 jQuery Repeater

  • 源码大小:51.83KB
  • 所需积分:1积分
  • 源码编号:19JP-3585
  • 浏览次数:976次
  • 最后更新:2023年06月29日
  • 所属栏目:表单
本站默认解压密码:19jp.com 或 19jp_com

简介

Repeater是一个用于创建可重复表单组的jQuery插件,它允许用户在表单中复制和删除一组可重复的字段。

它适用于您希望用户创建和管理他们经常使用的数据集(例如,常旅客号码、信用卡号码),或添加他们将来在其他表单上重复需要的新数据集的情况。

如何使用它:

1.在jQuery之后下载并包含中继器插件的缩小版。

  1. <script src="/path/to/cdn/jquery.min.js"></script>
  2. <script src="/path/to/jquery.repeater.min.js"></script>

2.使用以下内容创建可重复的表单组数据属性:

  • 数据转发器列表:用于重写字段名称
  • 数据中继器项目:将所有可重复的表单字段放置在此容器中
  • 数据中继器删除:删除按钮
  • 数据中继器创建:“复制”按钮
  1. <form action="#" class="repeater" enctype="multipart/form-data">
  2. <div data-repeater-list="group-a">
  3. <div data-repeater-item>
  4. <input type="text" name="text-input" value="A"/>
  5. <textarea name="textarea-input">A</textarea>
  6. <input type="radio" name="radio-input" value="A" checked/>
  7. <input type="radio" name="radio-input" value="B"/>
  8. <input type="checkbox" name="checkbox-input" value="A" checked/>
  9. <input type="checkbox" name="checkbox-input" value="B"/>
  10. <select name="select-input">
  11. <option value="A" selected>A</option>
  12. <option value="B">B</option>
  13. </select>
  14. <select name="multiple-select-input" multiple>
  15. <option value="A" selected>A</option>
  16. <option value="B" selected>B</option>
  17. </select>
  18. <input data-repeater-delete type="button" value="Delete"/>
  19. </div>
  20. </div>
  21. <input data-repeater-create type="button" value="Add"/>
  22. </form>

3.初始化表单上的插件:

  1. $('.repeater').repeater({
  2. // options and callbacks here
  3. });

4.该插件还支持嵌套的表单字段:

  1. <form action="#" class="outer-repeater">
  2. <div data-repeater-list="outer-group" class="outer">
  3. <div data-repeater-item class="outer">
  4. <input type="text" name="text-input" value="A" class="outer"/>
  5. <input data-repeater-delete type="button" value="Delete" class="outer"/>
  6. <div class="inner-repeater">
  7. <div data-repeater-list="inner-group" class="inner">
  8. <div data-repeater-item class="inner">
  9. <input type="text" name="inner-text-input" value="B" class="inner"/>
  10. <input data-repeater-delete type="button" value="Delete" class="inner"/>
  11. </div>
  12. </div>
  13. <input data-repeater-create type="button" value="Add" class="inner"/>
  14. </div>
  15. </div>
  16. </div>
  17. <input data-repeater-create type="button" value="Add" class="outer"/>
  18. </form>
  1. $('.outer-repeater').repeater({
  2. repeaters: [{
  3. selector: '.inner-repeater',
  4. }]
  5. });

5.设置重复字段的默认值:

  1. $('.repeater').repeater({
  2. defaultValues: {
  3. 'textarea-input': 'foo',
  4. 'text-input': 'bar',
  5. 'select-input': 'B',
  6. 'checkbox-input': ['A', 'B'],
  7. 'radio-input': 'B'
  8. },
  9. });

6.确定是否允许删除表单中的第一个组。默认值:“false”。

  1. $('.repeater').repeater({
  2. isFirstItemUndeletable: true,
  3. });

7.确定是否生成空表单。默认值:“false”。

  1. <form action="#" class="repeater" enctype="multipart/form-data">
  2. <div data-repeater-list="group-a">
  3. <div data-repeater-item style="display:none">
  4. <input type="text" name="text-input" value="A"/>
  5. <textarea name="textarea-input">A</textarea>
  6. <input type="radio" name="radio-input" value="A" checked/>
  7. <input type="radio" name="radio-input" value="B"/>
  8. <input type="checkbox" name="checkbox-input" value="A" checked/>
  9. <input type="checkbox" name="checkbox-input" value="B"/>
  10. <select name="select-input">
  11. <option value="A" selected>A</option>
  12. <option value="B">B</option>
  13. </select>
  14. <select name="multiple-select-input" multiple>
  15. <option value="A" selected>A</option>
  16. <option value="B" selected>B</option>
  17. </select>
  18. <input data-repeater-delete type="button" value="Delete"/>
  19. </div>
  20. </div>
  21. <input data-repeater-create type="button" value="Add"/>
  22. </form>
  1. $('.outer-repeater').repeater({
  2. initEmpty: true,
  3. });

8.回调函数。

  1. $('.outer-repeater').repeater({
  2. show: function () {
  3. $(this).slideDown();
  4. },
  5. hide: function (deleteElement) {
  6. if(confirm('Are you sure you want to delete this element?')) {
  7. $(this).slideUp(deleteElement);
  8. }
  9. },
  10. ready: function (setIndexes) {
  11. }
  12. });

9.获取表单字段的值。

  1. $('.repeater').repeaterVal();

预览截图