{% endmacro %}
{% macro dynamic_array_input(fielddict) %}
//to match the pattern in DOM
idx = function (n, i) { return n + '-' + i ; }
{% for name, type in fielddict.iteritems() %}
{% if type[-2:] == '[]' %}
$('#{{ name }}_btnAdd').click( function() {
$('#{{ name }}_btnDel').removeAttr('disabled').button('enable'); // enable the "del" button
// how many "duplicatable" input fields we currently have
var num = $('.{{ name }}_clonedInput').length;
// the numeric ID of the new input field being added
var newNum = new Number(num + 1);
var newElem = $('#'+idx('div{{ name }}', num)).clone().attr('id', idx('div{{ name }}', newNum));
newElem.children(':first').attr( 'for', idx('{{ name }}', newNum) ) // label
newElem.find('#'+idx('{{ name }}', num)).attr( 'id', idx('{{ name }}', newNum) ).attr('name', idx('{{ name }}', newNum));//input, even embedded in jquery mobile divs
$('#'+idx('div{{ name }}', num)).after(newElem);
// business rule: limit the number of fields to 5
if (newNum == 5) {
$('#{{ name }}_btnAdd' ).attr('disabled', 'disabled').button('disable');
$('#{{ name }}_btnAdd').parent().find('.ui-btn-text').text('maximum fields reached');
}
return false; // cancel original event
});
$( '#{{ name }}_btnDel' ).click( function() {
// how many "duplicatable" input fields we currently have
var num = $( '.{{ name }}_clonedInput' ).length;
// remove the last element
$('#'+idx('div{{ name }}', num )).remove();
// enable the "add" button, since we've removed one
$('#{{ name }}_btnAdd').removeAttr('disabled').button('enable');
$('#{{ name }}_btnAdd').parent().find('.ui-btn-text').text('add another name');
// if only one element remains, disable the "remove" button
if ( num-1 == 1 )
$('#{{ name }}_btnDel' ).attr('disabled', 'disabled').button('disable');
return false; // cancel original event
});
{% endif %}
{% endfor %}
{% endmacro %}
{% macro generate_inputs(fielddict) %}
{% for name, type in fielddict.iteritems() %}