编辑:更新为将 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>
好吧,这只是几行代码,但我不太喜欢“选择到数组”的东西。如果可能,您应该创建一个页面,该页面返回与用户输入匹配的类别列表(再次,请查看演示页面以获取示例,不幸的是,我对 Textpattern 帮不上什么忙)。
当然,我没有测试,如果您有问题,请发表评论。编辑:我做了测试,但我没有 5k 个项目select
;)