Uwielbiam odpowiedź Czarodzieja Cienia, która dokładnie odpowiada na pytanie całkiem nieźle. Mój jQuery twist na tym, którego używam jest tutaj. http://jsfiddle.net/UJAe4/
Po wpisaniu nowej wartości formularz jest gotowy do wysłania, wystarczy zająć się nowymi wartościami z tyłu.
jQuery jest:
(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));
więc zastosować to do poniższej 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>
Właśnie tak:
$(function() {
$("#otherize_me").otherize("other..", "put new option vallue here");
});
myślę, że może to być co szukam. Pozwól, że to sprawdzę i wrócę do ciebie. Dzięki! – Pretzel
To wygląda idealnie, ale nie jest to użyteczne dla mnie, ponieważ używam go w domu do prywatnej aplikacji i wymaga ode mnie zakupu licencji (której prawdopodobnie nie mogę przekonać mojego szefa do wiosny). Licencja tutaj: http : //www.sencha.com/license – Pretzel
To nie pozwala na wpisanie wartości "niestandardowej". – sholsinger