首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery自动完成输入表单,使用Textpattern类别列表作为源

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

Stack Overflow用户
提问于 2009-03-04 19:23:28
回答 2查看 5.2K关注 0票数 1

我正在使用Textpattern模式CMS来构建一个讨论站点--我对XHTML和CSS以及Textpattern的模板语言有很强的掌握,但是PHP有点超出了我的狡猾。

在要开始一个新主题的输入表单上,用户需要从5000多个选项列表中选择一个类别。使用HTML select-type input元素是非常困难的,但它可以工作。我想使用某种Javascript魔术来显示一个text**-type输入元素,该元素将从可用的类别*读取用户输入和显示匹配或自动完成,将所需选项的value传递到适当的数据库字段。

我已经看到了一些用于jquery的自动完成插件,但说明的前提是您了解Javascript是如何工作的。

如前所述,我很容易将类别列表生成为select-type input元素,并且可以使用CSS隐藏该元素。是否可以使用text-type输入元素中的自动完成机制来控制选择列表输入?我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-20 17:31:21

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

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

代码语言:javascript
复制
["example_one", "example_two", ... ]

由于您有5000+元素,您可能希望创建一个页面,该页面使用该格式简单地列出它们:

代码语言:javascript
复制
Page Autocomplete:
[
    <txp:article_custom form="array_form" ... />
]

Form array_form:
"<txp:title />",

若要使用此页面而不是将所有项包含在select字段中,请将自动完成设置为:

代码语言:javascript
复制
$("#example").autocomplete("<txp:link_to_home />Autocomplete");

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

为了加快速度,您可以在自定义显示页中使用Textpattern搜索函数,而不是使用完整的列表。可能有一种方法可以设置“自动完成”,以便每当输入/删除新字符时,“自动完成”将使用新的搜索字符串重新加载。

票数 1
EN

Stack Overflow用户

发布于 2009-03-04 20:08:16

编辑:更新为将option.value放入隐藏字段

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

代码语言:javascript
复制
<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代码将这些数据放入数组中:

代码语言:javascript
复制
var categories = $.map($("#mySelectId option"), function(e, i)
{
    return e; // Updated, return the full option instead its text
});

最后,您可以使用像这一个这样的自动完成插件:

代码语言:javascript
复制
$("#myTextBoxId").autocomplete(categories,
{
    formatItem : function(item) { return item.text; } // Added
});

检查自动完成插件演示页面,看看您可以使用什么选项 (比如autoFill和mustMatch)。

您所要做的就是将其放入您的html头中(jquery、自动完成css & js、页面的代码):

代码语言:javascript
复制
<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)。

当然,我没有测试,只是在你有问题的时候发表评论。编辑:我做了测试,但没有使用我的select中的5k项;)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/612045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档