I'm building a dynamic filter system, my user will be able to add as much criteria he wants Here a tiny example of my current aproach: $form['criteria'] = array( '#type' => 'fieldset', '#title' => t('Criterias'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#tree' => TRUE, ); for ($i=1; $i<=variable_get('beginer_criteria', 3); $i++) { $form['criteria'][$i]['table[]'] = array( '#type' => 'select', '#options' => $tables, '#value' => $load[$i]['table'], '#description' => $load[$i]['table'], '#attributes' => array( 'class' => 'edit-table', ), ); } The form will start with X sets of fields (2 combo, 1 editfield) I set jQuery to clone any of those criteria, adding more Here the problem begin, any cloned, will have the same name of the original one. My $form_values does not return the cloned fields. my HTML is: <div class=qz-tablefield><div class="form-item"> <select name="criteria[1][table[]]" class="form-select edit-table" id="edit-criteria-1-table[]" ><option value="0">Select an option</option><option value="6">criticality</option><option value="2">group</option><option value="4">origin</option><option value="3">position</option><option value="5">priority</option><option value="1">reason</option><option value="7">status</option></select> </div> <div class="form-item"> <select name="criteria[1][field[]]" class="form-select edit-field" id="edit-field1" id="edit-criteria-1-field[]" ><option value="0">Select a table</option></select> </div> <div class="form-item"> <input type="text" maxlength="100" name="criteria[1][value[]]" id="edit-criteria-1-value[]" size="30" value="" class="form-text" /> </div>Note the criteria[1], the next set will be criteria[2]The cloned criteria will to be 1 ! the $form_values ignore the new fields.What can I change in my $form to solve that? Thanks a lot Feijó