我需要在网页上创建多个下拉选择器列表,这也为用户提供了键入备用值的选项。我在这里找到了一个解决方案:Manually type in a value in a "Select" / Drop-down HTML list?
用户发布的答案" pawelmech"使用单个下拉列表,但我不能使它与多个下拉列表一起使用。任何帮助将不胜感激。
JQuery的:
(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));
HTML:
<form>
<select class="otherize_me">
<option value=1>option 1</option>
<option value=2>option 2</option>
<option value=3>option 3</option>
</select>
<br><br>
<select class="otherize_me">
<option value=4>option 4</option>
<option value=5>option 5</option>
<option value=6>option 6</option>
</select>
<br><br>
<select class="otherize_me">
<option value=7>option 7</option>
<option value=8>option 8</option>
<option value=9>option 9</option>
</select>
</form>
答案 0 :(得分:0)
id
值必须是唯一的。使用类或其他选择器。更新了代码以扩展示例。
HTML:
<form>
<select id="otherize_me_1">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
</select>
<br/>
<br/>
<select id="otherize_me_2">
<option value="4">option 4</option>
<option value="5">option 5</option>
<option value="6">option 6</option>
</select>
<br/>
<br/>
<select id="otherize_me_3">
<option value="7">option 7</option>
<option value="8">option 8</option>
<option value="9">option 9</option>
</select>
</form>
JS:
(function ($) {
$.fn.otherize = function (option_text, texts_placeholder_text) {
var oSel = $(this);
var option_id = oSel.attr('id') + '_other';
var textbox_id = option_id + "_tb";
oSel.append("<option value='' id='" + option_id + "' class='otherize' >" + option_text + "</option>");
oSel.after("<input type='text' id='" + textbox_id + "' style='display: none;' placeholder='" + texts_placeholder_text + "'/>");
oSel.change(function () {
oTbox = $('#' + textbox_id);
oSel.children(':selected').hasClass('otherize') ? oTbox.show() : oTbox.hide();
});
$("#" + textbox_id).change(function () {
$("#" + option_id).val($(this).val());
});
};
}(jQuery));
$(function () {
$("#otherize_me_1").otherize("Other..", "Other1");
$("#otherize_me_2").otherize("Other..", "Other2");
$("#otherize_me_3").otherize("Other..", "Other3");
});