翻译自:https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md
jQuery#typeahead
对于typeahead.js UI组件可以作为一个jQuery插件,它负责展示提示和处理DOM交互。
触发自定义事件以鼓励可扩展性
jQuery#typeahead(options, [*datasets])
对于一个给定的input[type=”text”],使用typeahead功能,options是一个用于配置选项的哈希,指的是为更多的信息关于可用的配置选项,随后的争论是(*datasets),是个人选择的哈希值的数据集,有关数据集的更多细节,参考Datasets。
$('.typeahead').typeahead({
minLength: 3,
highlight: true
},
{
name: 'my-dataset',
source: mySource
});
返回typeahead当前的值,该值是用户输入到input元素中的文本。
var myVal = $('.typeahead').typeahead('val');
设置typeahead的值,这应该代替jQuery#val。
$('.typeahead').typeahead('val', myVal);
打开建议的菜单。
$('.typeahead').typeahead('open');
关闭建议的菜单。
$('.typeahead').typeahead('close');
删除typeahead 功能,并将其input元素恢复到原来的状态。
$('.typeahead').typeahead('destroy');
返回一个typeahead插件的引用,并且还原jQuery.fn.typeahead到以前的值,可以用来避免命名冲突。
var typeahead = jQuery.fn.typeahead.noConflict();
jQuery.fn._typeahead = typeahead;
当初始化typehead时,有许多选项可以配置。
highlight – 如果为true,提出建议时,模式匹配当前的查询文本节点将被包裹在一个强大的元素的类集为{ { classNames.highlight} }的类名称。默认为false。
hint – 如果为false,Typeahead不会显示提示。默认为true。
minLength – 建议开始呈现之前所需的最小字符长度,默认是1。
classNames – 用于重写所使用的默认类名,查询 Class Names获得更多的信息。
一个typeahead是由一个或者多个字符集组成,当用户修改typeahead的值时,每个数据集将会尝试为新值提示。
对于大多数用例,一个数据集应该足够了,只有在场景中,您希望根据一些特定关系将呈现的建议分组,您需要使用多个数据集。例如,在twwiter.com,搜索typeahead组结果为最近的搜索趋势,占–将使用多个数据集的一个很好的用例。
可以使用以下选项来配置数据集:
1.source-建议支持的数据源,期望拥有签名函数(query, syncResults, asyncResults),syncResults 应同步调用建议和asyncresults应该叫建议计算异步(e.g. suggestions that come for an AJAX request)。source 也可以是一个Bloodhound实例,必须的。
2.async-如果有期望的异步建议让我们的数据集知道,如果没有设置,这些信息是从源签名中推断出来的。如果原函数需要3个参数,async将会设为true。
3.name - 数据集的名称,这将附加到{{classNames.dataset}}上,以形成包含DOM元素的类名。必须只包含下划线、破折号、字母(A-Z),数字,默认为随机数。
4.limit - 要显示的建议的最大数目,默认值是5。
5.display -对于给定的建议,确定它的字符串表示形式,在选择提示后,将在设置输入控件的值时使用此选项。可以是键字符串,也可以是将建议对象转换为字符串函数,默认建议字符串。
6.templates -在呈现数据集时使用模板散列,注意预编译模板函数接受一个JavaScript对象作为其第一个参数并返回一个HTML字符串。
。notFound -当给定的查询提示0条时建议使用。可以是一个HTML字符串也可以是一个预编译的模板。如果它是一个预编译模板,通过上下文可以包含查询。
。pending -当呈现的同步建议时0个,那么异步建议是可预期的。可以是一个HTML字符串也可以是一个预编译的模板,如果是一个预编译模板,通过上下文可以包含查询。
。header-当提示出现时将会展示在数据集的顶部,可以是一个HTML字符串也可以是一个预编译的模板,如果是一个预编译模板,通过上下文可以包含查询和提示。
。footer-当提示出现时将会呈现在数据集的低部,可以是一个HTML字符串也可以是一个预编译的模板,如果是一个预编译模板,通过上下文可以包含查询和提示。
。suggestion -用于展示单个提示,如果设置了,这是一个预编译模板,关联的建议对象将作为上下文,默认值是display,被包在div标签中。
以下的事件可以触发输入元件的生命周期中typeahead。
使用示例:
$('.typeahead').bind('typeahead:select', function(ev, suggestion) {
console.log('Selection: ' + suggestion);
});
注:每个事件都不能提供相同的参数。有关每个事件的参数列表的详细信息,请参见上面的事件描述。
highlight -添加到包装的高亮文本中,默认是tt-highlight。
覆盖这些默认值,你可使用classNames选项。
$('.typeahead').typeahead({
classNames: {
input: 'Typeahead-input',
hint: 'Typeahead-hint',
selectable: 'Typeahead-selectable'
}
});