Jquery自动完成输入表单,使用Textpattern类别列表作为源

我正在使用Textpattern CMS来构建一个讨论网站 – 我对XHTML和CSS以及Textpattern的模板语言有着深刻的把握,但PHP和Javascript有点超出我的狡猾。

在用于开始新主题的输入表单上,用户需要从超过5,000个选项的列表中选择一个类别。 使用HTML select -type input元素非常笨拙,但它可以工作。 我想使用某种Javascript魔术来显示text类型的输入元素 ,该元素将读取用户输入并显示可用类别的匹配或自动完成 ,将所需选项的value传递到相应的数据库字段。

我已经看到了几个用于jquery的自动完成插件,但是这些说明预先假定您了解Javascript的工作原理。

正如我上面提到的,我很容易将类别列表生成为select type input元素,我可以使用CSS隐藏该元素。 是否可以使用text类型输入元素中的自动完成机制来控制选择列表输入? 我该怎么办?

您可以设置自动完成function以从URL获取其数据,因此我可以看到使用Textpattern以几种方式使用它。

自动完成使用的数组格式如下所示:

 ["example_one", "example_two", ... ] 

由于您有5000多个元素,因此您可能希望创建一个只使用该格式列出它们的页面:

 Page Autocomplete: [  ] Form array_form: "", 

要使用此页面而不是在选择字段中包含所有项目,您需要设置自动完成function:

 $("#example").autocomplete("Autocomplete"); 

您可以使用缓存插件来加速加载。

为了加快速度,您可以将Textpattern搜索function与自定义显示页面一起使用,而不是使用完整列表。 可能有一种方法可以设置自动完成function,这样无论何时输入/删除新字符,都会使用新的搜索字符串重新加载自动完成function。

编辑:更新以将option.value放在隐藏字段中

对的,这是可能的。 例如,如果您有以下html代码:

     

您可以使用以下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,autocomplete css&js,你的页面代码):

     

好吧,它只有几行代码,但我真的不喜欢“选择arrays”的东西。 如果可能的话,你应该创建一个返回与用户输入匹配的类别列表的页面(再次,查看演示页面中的例子,不幸的是,我对Textpattern的帮助不大)。

当然,我没有测试,如果你有问题就发表评论。 编辑:我DID测试,但不是我的select 5k项目;)