Как я предполагал, мешает инпут, идущий после select с тем же name. Костыль конечно, но свою задачу решает. Сделал просто удаление инпута перед отправкой формы, все работает как надо. Спасибо за помощь! else{ $('#custom').remove(); $select.val() = $name; }

Так как бы форма то правильная но проблему я вижу в том, что поля идут один за одним с одинаковым name. И приходил последнее значение (пустое).

ну проверь по букварю я не помню формит уже давно не использую

Вот так передаются значения по консоли посмотрел: firma:Oursson firma: В результате пустое значение приходит.

Нет проверьте код select в форме на правильность передачи значений FORMIT, кажется там некорректно у вас что то если там верно то пробуйте так $(document).ready(function() { var $select = $('#select'), $custom = $('#custom'), $customValue = 'Другое', $name = $select.val();

$select.on('change', function() {

$name = $select.val(); if ($select.val() == $customValue) { $('#custom').show(); } else { $('#custom').hide(); $name = $select.val(); } });

$('#form').on('submit', function() { if ( ($select.val() == $customValue) && ($custom.val() != '') ) { $select.val() = $custom.val(); } else{ $select.val() = $name; } }); });

Так все работает, опять же в плане скрытия/отображения все ОК. Но при выборе в селекте не «Другое» приходит пустое значение. Это видимо из-за того, что в верстке после селекта присутствует (хоть и скрытый через display:none) input. Он получается с пустым значением и оно и перезаписывает при отправке значение из селекта (вернее, они 2 по порядку уходят — последний пустой.) Возможно, нужно не отображать/скрывать а вобще добавлять элемент, а чтобы при выборе не «Другое» — он удалялся из верстки. Как это сделать?

Я то пишу не проверяю ) поидее так $(document).ready(function() { var $select = $('#select'), $custom = $('#custom'), $customValue = 'Другое', $name = $select.val();

$select.on('change', function() {
   if  ($select.val() == $customValue) {
     $('#custom').show();
    }

else { $('#custom').hide(); } });

$('#form').on('submit', function() { if ( ($select.val() == $customValue) && ($custom.val() != '') ) { $select.val() = $custom.val(); } else{ $select.val() = $name; } }); });