$(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: ['
'].join('\n'),suggestion: Handlebars.compile('
}
});//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
});
});