1 | |
---|
2 | // Depends on jQuery. |
---|
3 | |
---|
4 | // Add a child by cloning a template and appending to wrapper element. |
---|
5 | // Used with a parent and LazyList of children (One-to-Many). |
---|
6 | // Since javascript has no pointers the childCount source var must be incremented by the calling code. |
---|
7 | // @param wrapperId The id of the wrapper element, e.g: div or tbody. |
---|
8 | // @param cloneId The id of the element to clone. |
---|
9 | // @param lazyList The name of the LazyList. |
---|
10 | // @param fields A list of fields in the clone that need name and id set. |
---|
11 | // @param focusField Which field in the fields list to focus on after adding. |
---|
12 | // @param childCount The current child count, used to set LazyList index, remember to increment! |
---|
13 | function addChild(wrapperId, cloneId, lazyList, fields, focusField, childCount){ |
---|
14 | |
---|
15 | var clone = jQuery("#"+cloneId).clone(); |
---|
16 | clone.attr('id', lazyList+childCount); |
---|
17 | var htmlId = lazyList+'['+childCount+'].'; |
---|
18 | |
---|
19 | var fieldsMap = {}; |
---|
20 | jQuery.each(fields, function(index, field) { |
---|
21 | fieldsMap[field] = clone.find('[id$="'+field+'"]'); |
---|
22 | fieldsMap[field].attr('id',htmlId + field) |
---|
23 | .attr('name',htmlId + field); |
---|
24 | }); |
---|
25 | |
---|
26 | jQuery("#"+wrapperId).append(clone); |
---|
27 | clone.show(); |
---|
28 | fieldsMap[focusField].focus(); |
---|
29 | } |
---|