#Repeater Creates an interface to add and remove a repeatable group of input elements. ###[Demo](http://briandetering.net/repeater) `bower install jquery.repeater --save` `npm install jquery.repeater --save` ##Templates Repeater uses the first "data-repeater-item" as a template for added items. ##Rewritten Name Attributes. Repeater rewrites your name attributes to avoid collisions within the same form. (since the name attributes will be repeated). In the example below, the name attributes would be renamed `group-a[0][text-input]` and `group-a[1][text-input]`. Checkbox inputs and Multiple Select inputs will have an additional `[]` appended. So for example a checkbox with name `foo` would be mapped to `group-a[0][foo][]`. Names get reindexed if an item is added or deleted. ##Example ```html
``` ## Nested Example ```html
``` ## repeaterVal Get a structured object of repeater values, without submitting the form. The rewritten name attributes of the form `group[index][name]` work well when submitting to a server that knows how to parse this format, but not as well when trying to grab the values via javascript. The `repeaterVal` method can be called on a repeater group and will parse the renamed attributes into something more easily digestible ```javascript // setup the repeater $('.repeater').repeater(); //get the values of the inputs as a formatted object $('.repeater').repeaterVal(); ``` ## setList You can set repeater list data after it has been initialized. ```javascript var $repeater = $('.repeater').repeater(); $repeater.setList([ { 'text-input': 'set-a', 'inner-group': [{ 'inner-text-input': 'set-b' }] }, { 'text-input': 'set-foo' } ]); ```