РЕДАКТИРОВАТЬ: Обновлено, чтобы поместить option.value в скрытое поле
Да, это возможно. Например, если у вас есть следующий HTML-код:
<input type="text" id="myTextBoxId"></input>
<!-- added hidden field to store selection option value -->
<input type="hidden" id="myHiddenField" name="selectedCategory"></input>
<select id="mySelectId" style="display: none">
<option>Category 1</option>
<option>Category 2</option>
<option>...</option>
</select>
Вы можете использовать следующий код jquery для помещения этих данных в массив:
var categories = $.map($("#mySelectId option"), function(e, i)
{
return e; // Updated, return the full option instead its text
});
И, наконец, вы можете использовать плагин автозаполнения, такой как этот :
$("#myTextBoxId").autocomplete(categories,
{
formatItem : function(item) { return item.text; } // Added
});
Проверьте демонстрационную страницу плагина для автозаполнения , чтобы увидеть, какие опции вы можете использовать (например, autoFill и mustMatch).
Все, что вам нужно сделать, это вставить это в заголовок html (jquery js, автозаполнение css & js, код для вашей страницы):
<link rel="stylesheet" type="text/css" href="jquery.autocomplete.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.autocomplete.js">
</script>
<script type="text/javascript">
$(function()
{
// Updated script
var categories = $.map($("#mySelectId option"),
function(e, i) { return e; });
$("#myTextBoxId").autocomplete(categories,
{
formatItem : function(item) { return item.text; }
});
// Added to fill hidden field with option value
$("#myTextBoxId").result(function(event, item, formatted)
{
$("#myHiddenField").val(item.value);
}
});
</script>
Хорошо, это всего лишь несколько строк кода, но мне не очень нравится материал "select to array". Если возможно, вы должны создать страницу, которая возвращает список категорий, соответствующих вводу пользователя (опять же, посмотрите демонстрационную страницу для примеров, к сожалению, я не могу вам сильно помочь с Textpattern).
Конечно, я не проверял, просто оставьте комментарий, если у вас есть вопрос.
РЕДАКТИРОВАТЬ: Я сделал тест, но не с 5k пунктов в моем select
;)