jQuery Typeahead, 通过相同的域 ajax 或跨域 jsonp 提供 typeahead (自动完成) 搜索预览, 并在本地存储中提供数据压缩。该插件是建立了很多选项和回调, 以允许自定义。
要求jquery 1.7.2以上版本,和typeahead
1 2 3 4 5 6 7 8 9 10 | < html > < head > ... <!-- Optional CSS --> < linkrel = "stylesheet" href = "/vendor/jquery-typeahead/dist/jquery.typeahead.min.css" > <!-- Required JavaScript --> < scriptsrc = "/vendor/jquery-typeahead/dist/jquery.typeahead.min.js" ></ script > ... </ head > |
初始化
有2种方法可以初始化 typeahead 搜索:
1、调用 typeahead () theinputoption 配置的函数 [推荐]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $.typeahead({ input: ".js-typeahead" , order: "asc" , source: { groupName: { // Ajax Request ajax: { url: "..." } } }, callback: { onClickBefore: function () { ... } } }); |
2、使用独特 inputselector 创建一个 jquery 对象。然后链 typeahead () 函数包含参数作为一个对象。
1 2 3 4 5 6 7 8 9 10 11 12 | $( '.js-typeahead' ).typeahead({ order: "asc" , source: { groupName: { // Array of Objects / Strings data: [ {...}, {...} ] } }, callback: { onInit: function () { ... } } }); |
html 结构和 css
typeahead 插件需要一个特定的 html 结构。这提供了一些优点:
轻松的 html 集成
默认样式使用 /dist/jquery.typeahead.min.css
Bootstrap 3 and 4 ready
* 2.5.0 typeahead 使用 theBEMcss 标准
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | < form > < divclass = "typeahead__container" > < divclass = "typeahead__field" > < spanclass = "typeahead__query" > < inputclass = "js-typeahead" name = "q" type = "search" autocomplete = "off" > </ span > < spanclass = "typeahead__button" > < buttontype = "submit" > < spanclass = "typeahead__search-icon" ></ span > </ button > </ span > </ div > </ div > </ form > |
配置
用户的配置对象将与默认的插件配置合并。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | /** * @private * Default options */ var_options = { input: null , // *RECOMMENDED*, jQuery selector to reach Typeahead's input for initialization minLength: 2, // Accepts 0 to search on focus, minimum character length to perform a search maxLength: false , // False as "Infinity" will not put character length restriction for searching results maxItem: 8, // Accepts 0 / false as "Infinity" meaning all the results will be displayed dynamic: false , // When true, Typeahead will get a new dataset from the source option on every key press delay: 300, // delay in ms when dynamic option is set to true order: null , // "asc" or "desc" to sort results offset: false , // Set to true to match items starting from their first character hint: false , // Added support for excessive "space" characters accent: false , // Will allow to type accent and give letter equivalent results, also can define a custom replacement object highlight: true , // Added "any" to highlight any word in the template, by default true will only highlight display keys group: false , // Improved feature, Boolean,string,object(key, template (string, function)) groupOrder: null , // New feature, order groups "asc", "desc", Array, Function maxItemPerGroup: null , // Maximum number of result per Group dropdownFilter: false , // Take group options string and create a dropdown filter dynamicFilter: null , // Filter the typeahead results based on dynamic value, Ex: Players based on TeamID backdrop: false , // Add a backdrop behind Typeahead results backdropOnFocus: false , // Display the backdrop option as the Typeahead input is :focused cache: false , // Improved option, true OR 'localStorage' OR 'sessionStorage' ttl: 3600000, // Cache time to live in ms compression: false , // Requires LZString library searchOnFocus: false , // Display search results on input focus blurOnTab: true , // Blur Typeahead when Tab key is pressed, if false Tab will go though search results resultContainer: null , // List the results inside any container string or jQuery object generateOnLoad: null , // Forces the source to be generated on page load even if the input is not focused! mustSelectItem: false , // The submit function only gets called if an item is selected href: null , // String or Function to format the url for right-click & open in new tab on link results display: [ "display" ], // Allows search in multiple item keys ["display1", "display2"] template: null , // Display template of each of the result list templateValue: null , // Set the input value template when an item is clicked groupTemplate: null , // Set a custom template for the groups correlativeTemplate: false , // Compile display keys, enables multiple key search from the template string emptyTemplate: false , // Display an empty template if no result cancelButton: true , // If text is detected in the input, a cancel button will be available to reset the input (pressing ESC also cancels) loadingAnimation: true , // Display a loading animation when typeahead is doing request / searching for results filter: true , // Set to false or function to bypass Typeahead filtering. WARNING: accent, correlativeTemplate, offset & matcher will not be interpreted matcher: null , // Add an extra filtering function after the typeahead functions source: null , // Source of data for Typeahead to filter callback: { onInit: null , // When Typeahead is first initialized (happens only once) onReady: null , // When the Typeahead initial preparation is completed onShowLayout: null , // Called when the layout is shown onHideLayout: null , // Called when the layout is hidden onSearch: null , // When data is being fetched & analyzed to give search results onResult: null , // When the result container is displayed onLayoutBuiltBefore: null , // When the result HTML is build, modify it before it get showed onLayoutBuiltAfter: null , // Modify the dom right after the results gets inserted in the result container onNavigateBefore: null , // When a key is pressed to navigate the results, before the navigation happens onNavigateAfter: null , // When a key is pressed to navigate the results onMouseEnter: null , // When the mouse enter an item in the result list onMouseLeave: null , // When the mouse leaves an item in the result list onClickBefore: null , // Possibility to e.preventDefault() to prevent the Typeahead behaviors onClickAfter: null , // Happens after the default clicked behaviors has been executed onDropdownFilter: null , // When the dropdownFilter is changed, trigger this callback onSendRequest: null , // Gets called when the Ajax request(s) are sent onReceiveRequest: null , // Gets called when the Ajax request(s) are all received onPopulateSource: null , // Perform operation on the source data before it gets in Typeahead data onCacheSave: null , // Perform operation on the source data before it gets in Typeahead cache onSubmit: null , // When Typeahead form is submitted onCancel: null // Triggered if the typeahead had text inside and is cleared }, selector: { container: "typeahead__container" , result: "typeahead__result" , list: "typeahead__list" , group: "typeahead__group" , item: "typeahead__item" , empty: "typeahead__empty" , display: "typeahead__display" , query: "typeahead__query" , filter: "typeahead__filter" , filterButton: "typeahead__filter-button" , dropdown: "typeahead__dropdown" , dropdownItem: "typeahead__dropdown-item" , button: "typeahead__button" , backdrop: "typeahead__backdrop" , hint: "typeahead__hint" , cancelButton: "typeahead__cancel-button" }, debug: false // Display debug information (RECOMMENDED for dev environment) }; |
特别申明:
本站所有资源都是由网友投稿发布,或转载各大下载站,请自行检测软件的完整性!
本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!
如有侵权请联系我们删除下架,联系方式:lei1294551502@163.com