Даже вот так попробуй проще $(document).ready(function() { var $select = $('#select'); var $custom = $('#custom'); var $customValue = 'Другое';

$select.on('change', function() {
   if ( ($this).val() == $customValue) && ($custom.val() != '') ) {
     $(this).val() = $custom.val();
    }
});

});

Да, это я так и делаю. Помимо всего еще один скрытый, в него нужно передать значение перед отправкой?

Принимай значение не selecta а inputa а при смене подставляй в этот интуп что хочешь

А в таком случае если выбрано в селекте не «Другое», то есть должно отправляться значение из селекта, приходит пустое значение.

Правильно вы же элементу $custom подставляете значение if ($select.val() == customValue) { $element = $custom; } а нужно $select

Вот такой скрипт использую — все равно отправляется значение из select — слово «Другое» $(document).ready(function() { var $select = $('#select'); var $custom = $('#custom'); var customValue = 'Другое';

$('#form').on('submit', function() {
    var $element = $select;
    if ($select.val() == customValue) {
        $element = $custom;
    }
    $element.attr('name', 'value');
});

$select.on('change', function() {
    $custom.toggle($(this).val() == customValue);
});

});

да просто в паре слов скажи, в чем трабл может быть, все делаю как в посте

Сейчас немного разгружусь — сделаю топик как пошагово сделать. сейчас времени нет абсолютно