typeahead有什么作用_前端自动提示功能插件-typeahead

本文介绍了前端自动提示插件 Typeahead 的使用方法,通过多个实例展示了如何利用 Typeahead 实现基本功能、血hound 引擎、预加载、远程数据加载、默认建议、自定义模板、多数据集以及滚动下拉菜单等功能。同时,文章以 NBA 和 NHL 团队为例,详细阐述了如何在实际项目中应用 Typeahead。
摘要由CSDN通过智能技术生成

$(document).ready(function() {//the basics

//----------

var substringMatcher = function(strs) {return functionfindMatches(q, cb) {varmatches, substringRegex;//an array that will be populated with substring matches

matches =[];//regex used to determine if a string contains the substring `q`

substrRegex = new RegExp(q, 'i');//iterate through the pool of strings and for any string that

//contains the substring `q`, add it to the `matches` array

$.each(strs, function(i, str) {if(substrRegex.test(str)) {

matches.push(str);

}

});

cb(matches);

};

};var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California','Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii','Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana','Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota','Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire','New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota','Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island','South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont','Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];

$('#the-basics .typeahead').typeahead({

hint:true,

highlight:true,

minLength:1},

{

name:'states',

source: substringMatcher(states)

});//bloodhound

//----------

//constructs the suggestion engine

var states = newBloodhound({

datumTokenizer: Bloodhound.tokenizers.whitespace,

queryTokenizer: Bloodhound.tokenizers.whitespace,//`states` is an array of state names defined in "The Basics"

local: states

});

$('#bloodhound .typeahead').typeahead({

hint:true,

highlight:true,

minLength:1},

{

name:'states',

source: states

});//prefetch

//--------

var countries = newBloodhound({

datumTokenizer: Bloodhound.tokenizers.whitespace,

queryTokenizer: Bloodhound.tokenizers.whitespace,//url points to a json file that contains an array of country names, see

//https://github.com/twitter/typeahead.js/blob/gh-pages/data/countries.json

prefetch: '../data/countries.json'});//passing in `null` for the `options` arguments will result in the default

//options being used

$('#prefetch .typeahead').typeahead(null, {

name:'countries',

source: countries

});//remote

//------

var bestPictures = newBloodhound({

datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),

queryTokenizer: Bloodhound.tokenizers.whitespace,

prefetch:'../data/films/post_1960.json',

remote: {

url:'../data/films/queries/%QUERY.json',

wildcard:'%QUERY'}

});

$('#remote .typeahead').typeahead(null, {

name:'best-pictures',

display:'value',

source: bestPictures

});//default suggestions

//-------------------

var nflTeams = newBloodhound({

datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),

queryTokenizer: Bloodhound.tokenizers.whitespace,

identify:function(obj) { returnobj.team; },

prefetch:'../data/nfl.json'});functionnflTeamsWithDefaults(q, sync) {if (q === '') {

sync(nflTeams.get('Detroit Lions', 'Green Bay Packers', 'Chicago Bears'));

}else{

nflTeams.search(q, sync);

}

}

$('#default-suggestions .typeahead').typeahead({

minLength:0,

highlight:true},

{

name:'nfl-teams',

display:'team',

source: nflTeamsWithDefaults

});//custom templates

//----------------

$('#custom-templates .typeahead').typeahead(null, {

name:'best-pictures',

display:'value',

source: bestPictures,

templates: {

empty: ['

','unable to find any Best Picture winners that match the current query','
'].join('\n'),

suggestion: Handlebars.compile('

{{value}} – {{year}}
')

}

});//multiple datasets

//-----------------

var nbaTeams = newBloodhound({

datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),

queryTokenizer: Bloodhound.tokenizers.whitespace,

prefetch:'../data/nba.json'});var nhlTeams = newBloodhound({

datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),

queryTokenizer: Bloodhound.tokenizers.whitespace,

prefetch:'../data/nhl.json'});

$('#multiple-datasets .typeahead').typeahead({

highlight:true},

{

name:'nba-teams',

display:'team',

source: nbaTeams,

templates: {

header:'

NBA Teams

'}

},

{

name:'nhl-teams',

display:'team',

source: nhlTeams,

templates: {

header:'

NHL Teams

'}

});//scrollable dropdown menu

//------------------------

$('#scrollable-dropdown-menu .typeahead').typeahead(null, {

name:'countries',

limit:10,

source: countries

});//rtl

//---

var arabicPhrases = newBloodhound({

datumTokenizer: Bloodhound.tokenizers.whitespace,

queryTokenizer: Bloodhound.tokenizers.whitespace,

local: ["الإنجليزية","نعم","لا","مرحبا","أهلا"]

});

$('#rtl-support .typeahead').typeahead({

hint:false},

{

name:'arabic-phrases',

source: arabicPhrases

});

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值