Me encanta la respuesta de Shadow Wizard, que por cierto responde a la pregunta bastante bien. Mi jQuery giro en esto que uso está aquí. http://jsfiddle.net/UJAe4/
Después de escribir un nuevo valor, el formulario está listo para enviarse, solo necesita manejar nuevos valores en el back-end.
jQuery es:
(function ($)
{
$.fn.otherize = function (option_text, texts_placeholder_text) {
oSel = $(this);
option_id = oSel.attr('id') + '_other';
textbox_id = option_id + "_tb";
this.append("<option value='' id='" + option_id + "' class='otherize' >" + option_text + "</option>");
this.after("<input type='text' id='" + textbox_id + "' style='display: none; border-bottom: 1px solid black' placeholder='" + texts_placeholder_text + "'/>");
this.change(
function() {
oTbox = oSel.parent().children('#' + textbox_id);
oSel.children(':selected').hasClass('otherize') ? oTbox.show() : oTbox.hide();
});
$("#" + textbox_id).change(
function() {
$("#" + option_id).val($("#" + textbox_id).val());
});
};
}(jQuery));
Así se aplica esto al siguiente HTML:
<form>
<select id="otherize_me">
<option value=1>option 1</option>
<option value=2>option 2</option>
<option value=3>option 3</option>
</select>
</form>
Al igual que este:
$(function() {
$("#otherize_me").otherize("other..", "put new option vallue here");
});
Creo que esto puede ser lo que estoy buscando. Déjame verlo y contactarte. ¡Gracias! – Pretzel
Esto se ve perfecto, pero no es utilizable para mí, ya que lo estoy usando internamente para una aplicación privada y me exige comprar una licencia (que probablemente no pueda convencer a mi jefe para que salga). Licencia aquí: http : //www.sencha.com/license – Pretzel
Esto no parece permitir que uno ingrese un valor "personalizado". – sholsinger