1.0.0 • Published 7 years ago

k_typeahead v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

k_typeahead

k_typeahead是一个搜索提示插件,效果类似于typeahead,主要改动为移除了对jQuery的依赖。

快速开始

# 引入css文件
<link href="./css/k_typeahead.min.css" rel="stylesheet">

# 创造一个input
<input type="text" id="example" />

# 引入js文件
<script src="./js/k_typeahead.min.js"></script>

# 运行k_typeahead
<script>
	//最基础的运行方式
	new k_typeahead(document.getElementById('example'),{
		//query在用户输入后触发,返回两个参数keyword 和 callback
		query: function(keyword, callback){
			//keyword是用户所输的内容
			console.log(keyword);
			//callback是一个回调,接收一个array参数,值为需要显示的列表
			//正常情况下,您应该使用keyword查询本地数据或发ajax获取相关数据,处理成数组后放入callback中。
			callback([1,2,3,4,5]);
		},
	});
</script>

运行插件

# k_typeahead运行至少需要2个参数,一个为绑定的js元素element,另一个为查询方法query。您也可以对插件进行更多设置来个性化插件。
new k_typeahead(element,{query [,otherOps...]});

自定义设置

k_typeahead提供了一些自定义属性与方法, 您可以根据实际情况进行更改。

样例

new k_typeahead(element,{
	query: function(keyword,callback){},
	width: 200,
	height: 300,
	timer: 600,
	...
});

width

默认值:和绑定的input等宽

类型:number

通过改变width可以自定义搜索提示列表的宽度。

height

默认值:auto(由内容高度决定)

类型:number

通过改变height可以自定义搜索提示列表的高度。

timer

默认值:500(单位:毫秒)

类型:number

timer是设置用户输入后停顿多少时间触发query方法。参数的意义在于防止用户在连续输入时频繁触发query方法。

maxList

默认值:10

类型:number

maxList是设置搜索提示列表显示最多的条数。

searchEmpty

默认值:false

类型:bool

searchEmpty是设置当输入为空时是否进行搜索查询,默认关闭。

className

默认值:无

类型:string

className是给k_typeahead搜索提示列表基础结构最外层添加类名。

query

默认值:function(){}

类型:function

入参:

keyword (strong)

callback (function(array){})

返回:无

query是在用户输入停止后触发的方法,用于对用户的查询进行处理。入参有两个,keyword为用户输入的查询词,callback为处理后的回调,接收处理好的列表数据。callback最少需传入一个数组参数,否则会抛出错误。如果您不打算调用buildList拼接结构,则传入的数组必须为一维数组,否则程序将无法解析。callback可以接收更多的参数,具体作用在下面的buildList进行介绍。

query不需要返回值。

buildList

默认值:无

类型:function

入参:

index (number)

list (array)

arguments...

返回:txt (str)

buildList允许自定义列表结构。方法的入参index,值为query方法中传入的数组的索引。入参list,值为query方法中传入的数组。如果您在query的callback中传入了更多的参数,他们会在buildList中原封不动的返回出来。您可以利用这些数据去帮助您更好的自定义列表的结构。

在您构建完列表结构后,需要以字符串的形式将结构返回(return)出去。

buildBase

默认值:function(ul){return ul}

类型:function

入参:

list (str)

返回:txt (str)

buildBase允许自定义搜索提示列表的基础结构。默认情况下,搜索列表只是一个单纯的list,如果你想要给列表加上一个头部或一个尾部,可以使用此方法。

buildBase只有一个入参list,值为搜索列表结构的字符串。您可以通过字符串拼接的方式加入您自定义的内容。

在您构建完列表的基础结构后,需要以字符串的形式将结构返回(return)出去。

activeFn

默认值:function(){}

类型:function

入参:

data (array)

index (number)

element (object)

返回:无

activeFn允许增加用户选择某条查询后的交互效果。当用户用鼠标或回车选中某条数据后,k_typeahead会进行一系列的处理,比如关闭搜索提示列表,将用户选中的值放入input。如果您想进行额外的处理,可以使用此方法。activeFn有三个参数。第一个data是传入的数组;第二个index是当前选中数据的索引;第三个是element,值为用户选中数据对应的Li节点。

activeFn不需要返回值。

inputShowVal

默认值:无

类型:function

入参:

element (object)

toTxt (function)

返回:txt (str)

inputShowVal允许自定义当使用键盘上下选择或鼠标确定时input内的显示值。入参element的值为用户当前选择数据对应的Li节点,toTxt是一个简易的将html结构转成txt文本的方法,功能类似jQuery的text(),您可以使用它把处理好的对象return出去。如果您有更好的实现方法或调用了其他插件实现该功能,您可以忽略该参数。

在您处理完成后,需要以字符串的形式将结果返回(return)出去。

heightLight

默认值:function(){}

类型:function

入参:

keyword (str)

返回:txt (str)

heightLight允许自定义用户选中后的高亮效果。k_typeahead默认会给匹配的单词加上strong标签进行加粗展示,但如果您想要别的提示效果,可以使用此方法。

heightLight只有一个入参keyword,值为匹配到的需要重点显示的字符串。如果您想要换个颜色进行提示,可以通过字符串拼接的方式给它加上span标签并给上对应的样式。如果你不想要提示效果,将keyword直接返回出去就好。

在您选择好提示效果后,需要以字符串的形式将结构返回(return)出去。

customHeightLight

默认值:''

类型:function

入参:

keyword (str)

txt (str)

data (object)

返回:txt (str)

customHeightLight是heightLight的高阶方法。比起heightLight,它会多两个入参,txt的值为整个需要匹配的内容的html结构。data为拼接结构时的对象。调用此方法后,k_typeahead不会再进行匹配高亮处理,所有高亮效果都交由您自己定义。

在您处理完成后,需要以字符串的形式将结构返回(return)出去。

方法

k_typeahead暴露了一些方法,在某些特殊场合,您可能希望运行这些方法来处理某些问题。

样例

//初始化k_typeahead,并寄存在变量中。
var example = new k_typeahead(element,{
	query: function(keyword,callback){},
	width: 200,
	height: 300,
	timer: 600,
	...
});
//运行k_typeahead暴露的初始化方法
example.init();

init

init可以重新初始化k_typeahead。在某些场合,比如弹窗中,可能需要重新对k_typeahead进行初始化。

position

position可以对搜索提示列表进行定位。当您对结构进行了修改使input位置变化导致搜索提示列表的定位出现偏差时,您可以调用此方法对k_typeahead重新进行定位。

show

show可以让您自己决定在哪些场合展示或隐藏搜索提示列表。它接收一个参数,值为bool值。为true时,列表显示;反之列表隐藏。

其它说明

如果您发现bug或有优化建议,请发邮件至285985285@qq.com。

作者: xiek881028

blog: bagazhu