Ответ 1
Вот script для этого: Демо, Источник
Или другой, который работает несколько иначе: ссылка удалена (сайт больше не существует)
Мне нужно, чтобы пользователи выбирали элемент из раскрывающегося списка, но также позволяли им вместо этого вводить любой текст, даже если он не соответствует элементу в списке. Как я могу достичь этого на веб-странице с помощью HTML и Javascript?
Поле select
не позволяет пользователям вводить текст, а текстовое поле input
не отображает предпочтительные альтернативы.
Все элементы должны показать, открывается ли пользователь раскрывающийся список, поэтому он не может быть простым автозаполнением, который отображает только соответствующие элементы.
Вот script для этого: Демо, Источник
Или другой, который работает несколько иначе: ссылка удалена (сайт больше не существует)
Я знаю, что на этот вопрос уже дан ответ, давным-давно, но это касается других людей, которые могут оказаться здесь и испытывают трудности с поиском того, что им нужно. Мне не удалось найти существующий плагин, который сделал именно то, что мне нужно, поэтому я написал свой собственный jQuery-интерфейс для выполнения этой задачи. Он основан на примере combobox на сайте пользовательского интерфейса jQuery. Надеюсь, это может помочь кому-то.
Вы можете попробовать реализовать редактируемые combobox http://www.zoonman.com/projects/combobox/
Забудьте элемент datalist, который является хорошим решением для функции автозаполнения, но не для функции combobox.
CSS
.combobox {
display: inline-block;
position: relative;
}
.combobox select {
display: none;
position: absolute;
overflow-y: auto;
}
HTML:
<div class="combobox">
<input type="number" name="" value="" min="" max="" step=""/><br/>
<select size="3">
<option value="0"> 0</option>
<option value="25"> 25</option>
<option value="40"> 40</option>
</select>
</div>
js (jQuery):
$('.combobox').each(function() {
var
$input = $(this).find('input'),
$select = $(this).find('select');
function hideSelect() {
setTimeout(function() {
if (!$select.is(':focus') && !$input.is(':focus')) {
$select
.hide()
.css('z-index', 1);
}
}, 20);
}
$input
.focusin(function() {
if (!$select.is(':visible')) {
$select
.outerWidth($input.outerWidth())
.show()
.css('z-index', 100);
}
})
.focusout(hideSelect)
.on('input', function() {
$select.val('');
});
$select
.change(function() {
$input.val($select.val());
})
.focusout(hideSelect);
});
Это работает правильно, даже если вы используете текстовый ввод вместо номера.
Я думаю, что это будет соответствовать вашим требованиям:
попробуйте сделать это
<div style="position: absolute;top: 32px; left: 430px;" id="outerFilterDiv">
<input name="filterTextField" type="text" id="filterTextField" tabindex="2" style="width: 140px;
position: absolute; top: 1px; left: 1px; z-index: 2;border:none;" />
<div style="position: absolute;" id="filterDropdownDiv">
<select name="filterDropDown" id="filterDropDown" tabindex="1000"
onchange="DropDownTextToBox(this,'filterTextField');" style="position: absolute;
top: 0px; left: 0px; z-index: 1; width: 165px;">
<option value="-1" selected="selected" disabled="disabled">-- Select Column Name --</option>
</select>
посмотрите следующий пример fiddle
Ищет ответ, но все, что я мог найти, устарело.
Эта проблема решена с HTML5: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist
<label>Choose a browser from this list:
<input list="browsers" name="myBrowser" /></label>
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
<option value="Internet Explorer">
<option value="Opera">
<option value="Safari">
<option value="Microsoft Edge">
</datalist>
Если бы я этого не нашел, я бы пошел с таким подходом:
http://www.dhtmlgoodies.com/scripts/form_widget_editable_select/form_widget_editable_select.html