Самое сложное в том, что вы, вероятно, хотите, чтобы оба поля input
и select
использовали одно и то же имя, так что независимо от того, что обрабатывает данные формы, вам не придется задаваться вопросом, что было выбрано, а вместо этого просточитать значение из одного и того же имени.
Мой взгляд на это:
var i;
var b = false;
$("select").change(function(){
if($("option:selected",this).hasClass('custom')){
i = $('<input />').attr('name','values').insertAfter(this);
}else{
$(i).remove();
}
});
$('form').submit(function(e){
if (!b){
e.preventDefault();
if ($(i).length>0){
$('select').remove();
} else{
$(i).remove();
}
b = true;
$(this).trigger('submit');
}
});
пример: http://jsfiddle.net/niklasvh/Cq59K/ (взгляните на данные отправки формы, использует те жеимя для полей и не имеет повторяющихся записей, например, поля со списком и поля ввода).