Обработчик селекта js который и меняет блоки с помощью display:none, display:block.
Вариант А. Переписать этот обработчик так, чтобы наверняка удалял неиспользуемый вариант и создавал блок с нужным вариантом полей, тогда у вас в форме не будут лишних полей.
Вариант A2. Переписать этот обработчик так, чтобы в скрытых блоках имена полей были с префиксами, а не в скрытых префиксы убирались, тогда сервер будет обрабатывать только те поля, у которых нормальные имена (без префиксов).
Вариант A3. К дополнению к display: none, нужно вырубать поля атрибутом
disable.
Вариант Б. Поля с именами, которые будут обрабатываться на сервере вынести в отдельные поля hidden (на форме будут поля с теме же именами, но с префиксами, чтобы они не пересекались и не брались в учет сервером), и по submit сделать обработчик, чтобы он переносил в них значения по текущему состоянию формы.
PS: Самый нетрудозатратный для разработчика - вариант А3.
/*
Функция вкл и выкл полей формы в различных контейнерах
@param str enable_id - id-контейнера, в котором нужно вкл. поля ввода
@param arr disable_ids - массив id контейнеров, в которых нужно выкл. поля ввода
*/
function fields_enable_and_disable(enable_id, disable_ids)
{
var enable_container = document.getElementById(enable_id); // получаем контейнер, в котором нужно "включить" поля ввода
var field_types = ['input', 'select', 'textarea']; // все виды полей ввода с которыми нужно проделать манипуляцию вкл/выкл.
var count_i = field_types.length; // кол-во типов полей
for(var i = 0; i < count_i; i++) // перебираем типы полей
{
var field_type = field_types[i]; // текущий тип поля
var enable_fields = enable_container.getElementsByTagName(field_type); // получаем коллекцию полей ввода, которые нужно вкл.
var count_j = enable_fields.length; // кол-во полей текущего типа
for(var j = 0; j < count_j; j++) // перебираем поля этого типа
enable_fields[j].disabled = false; // включаем
var count_k = disable_ids.length; // кол-во контейнеров, в которых нужно выкл. поля
for(k = 0; k < count_k; k++) // перебираем неактивные контейнеры
{
var disable_id = disable_ids[k]; // id - текущего неактивного контейнера
var disable_container = document.getElementById(disable_id); // получаем неактивный контейнер
var disable_fields = disable_container.getElementsByTagName(field_type); // получаем поля текущего типа неактивного контейнера
var count_n = disable_fields.length; // кол-во этих полей по текущ. типу
for(var n = 0; l < count_n; n++)
disable_fields[n].disabled = true; // выкл. эти поля
}
}
}