{"id":23602801,"url":"https://github.com/lzwme/bootstrap-suggest-plugin","last_synced_at":"2025-04-14T09:03:05.608Z","repository":{"id":23162135,"uuid":"26517793","full_name":"lzwme/bootstrap-suggest-plugin","owner":"lzwme","description":"这是一个基于 bootstrap 按钮式下拉菜单组件的搜索建议插件，必须使用于按钮式下拉菜单组件上。","archived":false,"fork":false,"pushed_at":"2024-12-10T13:13:43.000Z","size":571,"stargazers_count":369,"open_issues_count":3,"forks_count":174,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-04-03T06:04:14.612Z","etag":null,"topics":["bootstrap","javascript","jquery-plugin","suggest","suggestion"],"latest_commit_sha":null,"homepage":"http://lzw.me/pages/demo/bootstrap-suggest-plugin","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lzwme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-11-12T03:40:24.000Z","updated_at":"2025-03-31T01:42:34.000Z","dependencies_parsed_at":"2024-12-27T07:00:35.429Z","dependency_job_id":null,"html_url":"https://github.com/lzwme/bootstrap-suggest-plugin","commit_stats":{"total_commits":115,"total_committers":5,"mean_commits":23.0,"dds":"0.13043478260869568","last_synced_commit":"5fdb517d8782bf8d0d671cc29a9b6e0ae955c10b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lzwme%2Fbootstrap-suggest-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lzwme%2Fbootstrap-suggest-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lzwme%2Fbootstrap-suggest-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lzwme%2Fbootstrap-suggest-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lzwme","download_url":"https://codeload.github.com/lzwme/bootstrap-suggest-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248808132,"owners_count":21164791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","javascript","jquery-plugin","suggest","suggestion"],"created_at":"2024-12-27T12:13:18.999Z","updated_at":"2025-04-14T09:03:05.257Z","avatar_url":"https://github.com/lzwme.png","language":"JavaScript","readme":"[![Code Climate](https://lzw.me/images/logo.png)](https://lzw.me)\n\nBootstrap Search Suggest\n========\n\n[Demo|示例](http://lzw.me/pages/demo/bootstrap-suggest-plugin)\n\n这是一个基于 bootstrap 按钮式下拉菜单组件的搜索建议插件，必须使用于按钮式下拉菜单组件上。\n\n[![NPM version][npm-image]][npm-url]\n[![node version][node-image]][node-url]\n[![npm download][download-image]][download-url]\n[![gemnasium deps][gemnasium-image]][gemnasium-url]\n[![GitHub issues][issues-img]][issues-url]\n[![GitHub forks][forks-img]][forks-url]\n[![GitHub stars][stars-img]][stars-url]\n\n[grunt-url]: https://gruntjs.com\n[stars-img]: https://img.shields.io/github/stars/lzwme/bootstrap-suggest-plugin.svg\n[stars-url]: https://github.com/lzwme/bootstrap-suggest-plugin/stargazers\n[forks-img]: https://img.shields.io/github/forks/lzwme/bootstrap-suggest-plugin.svg\n[forks-url]: https://github.com/lzwme/bootstrap-suggest-plugin/network\n[issues-img]: https://img.shields.io/github/issues/lzwme/bootstrap-suggest-plugin.svg\n[issues-url]: https://github.com/lzwme/bootstrap-suggest-plugin/issues\n[npm-image]: https://img.shields.io/npm/v/bootstrap-suggest-plugin.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/bootstrap-suggest-plugin\n[gemnasium-image]: https://img.shields.io/gemnasium/lzwme/bootstrap-suggest-plugin.svg?style=flat-square\n[gemnasium-url]: https://gemnasium.com/lzwme/bootstrap-suggest-plugin\n[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square\n[node-url]: https://nodejs.org/download/\n[download-image]: https://img.shields.io/npm/dm/bootstrap-suggest-plugin.svg?style=flat-square\n[download-url]: https://npmjs.org/package/bootstrap-suggest-plugin\n\n## 浏览器支持\n\n* 支持 ie8+,chrome,firefox,safari\n\n## 功能说明\n\n* 搜索方式：从 data.value 的有效字段数据中查询 keyword 的出现，或字段数据包含于 keyword 中\n* 支持单关键字、多关键字的输入搜索建议，多关键字可自定义分隔符\n* 支持按 data 数组数据搜索、按  URL 请求搜索和按首次请求URL数据并缓存搜索三种方式\n* 单关键字会设置 data-id 和输入框内容两个值，以 indexId/idField 和 indexKey/idFiled 取值 data 的数据为准；多关键字只设置输入框值\n\n## 快速上手\n\n1. 引入 jQuery、bootstrap.min.css、bootstrap.min.js\n2. 引入插件js: `bootstrap-suggest.min.js`\n3. 初始化插件\n\n```js\n$(\"input#test\").bsSuggest({\n    url: \"/rest/sys/getuserlist?keyword=\"\n});\n```\n具体使用请参考参数配置说明及 demo 示例页面源码([Demo](http://lzw.me/pages/demo/bootstrap-suggest-plugin/demo))\n\n## NPM 方式\n\n[![bootstrap-suggest-plugin](https://nodei.co/npm/bootstrap-suggest-plugin.png)](https://npmjs.org/package/bootstrap-suggest-plugin)\n\n```js\nrequire('bootstrap-suggest-plugin');\n//import from 'bootstrap-suggest-plugin';\n\n$(\"#test\").bsSuggest({\n    url: \"/rest/sys/getuserlist?keyword=\"\n});\n```\n\n## 使用示例\n\n### 方法调用\n1. 禁用提示： `$(\"input#test\").bsSuggest(\"disable\");`\n2. 启用提示： `$(\"input#test\").bsSuggest(\"enable\");`\n3. 销毁插件： `$(\"input#test\").bsSuggest(\"destroy\");`\n4. 查看版本：`$(\"input#test\").bsSuggest(\"version\");`\n\n### 事件监听\n1. `onDataRequestSuccess`: 当  AJAX 请求数据成功时触发，并传回结果到第二个参数\n2. `onSetSelectValue`：当从下拉菜单选取值时触发，并传回设置的数据到第二个参数\n3. `onUnsetSelectValue`：当设置了 idField，且自由输入内容时触发（与背景警告色显示同步）\n4. `onShowDropdown`：下拉菜单显示时触发\n5. `onHideDropdown`：下拉菜单隐藏式触发\n\n### 示例参考\n\n```js\n$(\"#test\").bsSuggest('init', {\n    url: \"/rest/sys/getuserlist?keyword=\",\n    effectiveFields: [\"userName\", \"email\"],\n    searchFields: [ \"shortAccount\"],\n    effectiveFieldsAlias:{userName: \"姓名\"},\n    clearable: true,\n    idField: \"userId\",\n    keyField: \"userName\"\n}).on('onDataRequestSuccess', function (e, result) {\n    console.log('onDataRequestSuccess: ', result);\n}).on('onSetSelectValue', function (e, selectedData, selectedRawData) {\n    console.log('onSetSelectValue: ', e.target.value, selectedData, selectedRawData);\n}).on('onUnsetSelectValue', function () {\n    console.log('onUnsetSelectValue');\n}).on('onShowDropdown', function (e, data) {\n    console.log('onShowDropdown', e.target.value, data);\n}).on('onHideDropdown', function (e, data) {\n    console.log('onHideDropdown', e.target.value, data);\n}).on('onClear', function () {\n    console.log('onClear');\n});\n```\n更多详细用法，可参考 [demo/index.html](https://github.com/lzwme/bootstrap-suggest-plugin/blob/master/demo/index.html) 和 [demo/demo.js](https://github.com/lzwme/bootstrap-suggest-plugin/blob/master/demo/demo.js) 文件源代码，提供了自定义数据、URL 请求数据、百度搜索 API、淘宝搜索 API 的接口演示。\n\n## 配置参数\n\n参数列表中的值均为插件默认值\n```js\nvar defaultOptions = {\n    url: null,                      //请求数据的 URL 地址\n    jsonp: null,                    //设置此参数名，将开启jsonp功能，否则使用json数据结构\n    data: {\n        value: []\n    },                              //提示所用的数据，注意格式\n    indexId: 0,                     //每组数据的第几个数据，作为input输入框的 data-id，设为 -1 且 idField 为空则不设置此值\n    indexKey: 0,                    //每组数据的第几个数据，作为input输入框的内容\n    idField: '',                    //每组数据的哪个字段作为 data-id，优先级高于 indexId 设置（推荐）\n    keyField: '',                   //每组数据的哪个字段作为输入框内容，优先级高于 indexKey 设置（推荐）\n\n    /* 搜索相关 */\n    autoSelect: true,               // 键盘向上/下方向键时，是否自动选择值\n    allowNoKeyword: true,           // 是否允许无关键字时请求数据\n    getDataMethod: 'firstByUrl',    // 获取数据的方式，url：一直从url请求；data：从 options.data 获取；firstByUrl：第一次从Url获取全部数据，之后从options.data获取\n    delayUntilKeyup: false,         // 获取数据的方式 为 firstByUrl 时，是否延迟到有输入时才请求数据\n    ignorecase: false,              // 前端搜索匹配时，是否忽略大小写\n    effectiveFields: [],            // 有效显示于列表中的字段，非有效字段都会过滤，默认全部有效。\n    effectiveFieldsAlias: {},       // 有效字段的别名对象，用于 header 的显示\n    searchFields: [],               // 有效搜索字段，从前端搜索过滤数据时使用，但不一定显示在列表中。effectiveFields 配置字段也会用于搜索过滤\n    twoWayMatch: true,              // 是否双向匹配搜索。为 true 即输入关键字包含或包含于匹配字段均认为匹配成功，为 false 则输入关键字包含于匹配字段认为匹配成功\n    multiWord: false,               // 以分隔符号分割的多关键字支持\n    separator: ',',                 // 多关键字支持时的分隔符，默认为半角逗号\n    delay: 300,                     // 搜索触发的延时时间间隔，单位毫秒\n    emptyTip: '',                   // 查询为空时显示的内容，可为 html\n    searchingTip: '搜索中...',       // ajax 搜索时显示的提示内容，当搜索时间较长时给出正在搜索的提示\n    hideOnSelect: false,            // 鼠标从列表单击选择了值时，是否隐藏选择列表\n    maxOptionCount: 200,            // 选择列表最多显示的可选项数量，默认为 200\n\n    /* UI */\n    autoDropup: false,              //选择菜单是否自动判断向上展开。设为 true，则当下拉菜单高度超过窗体，且向上方向不会被窗体覆盖，则选择菜单向上弹出\n    autoMinWidth: false,            //是否自动最小宽度，设为 false 则最小宽度不小于输入框宽度\n    showHeader: false,              //是否显示选择列表的 header。为 true 时，有效字段大于一列则显示表头\n    showBtn: true,                  //是否显示下拉按钮\n    inputBgColor: '',               //输入框背景色，当与容器背景色不同时，可能需要该项的配置\n    inputWarnColor: 'rgba(255,0,0,.1)', //输入框内容不是下拉列表选择时的警告色\n    listStyle: {\n        'padding-top': 0,\n        'max-height': '375px',\n        'max-width': '800px',\n        'overflow': 'auto',\n        'width': 'auto',\n        'transition': '0.3s',\n        '-webkit-transition': '0.3s',\n        '-moz-transition': '0.3s',\n        '-o-transition': '0.3s'\n    },                              //列表的样式控制\n    listAlign: 'left',              //提示列表对齐位置，left/right/auto\n    listHoverStyle: 'background: #07d; color:#fff', //提示框列表鼠标悬浮的样式\n    listHoverCSS: 'jhover',         //提示框列表鼠标悬浮的样式名称\n    clearable: false,               // 是否可清除已输入的内容\n\n    /* key */\n    keyLeft: 37,                    //向左方向键，不同的操作系统可能会有差别，则自行定义\n    keyUp: 38,                      //向上方向键\n    keyRight: 39,                   //向右方向键\n    keyDown: 40,                    //向下方向键\n    keyEnter: 13,                   //回车键\n\n    /* methods */\n    fnProcessData: processData,     //格式化数据的方法，返回数据格式参考 data 参数\n    fnGetData: getData,             //获取数据的方法，无特殊需求一般不作设置\n    fnAdjustAjaxParam: null,        //调整 ajax 请求参数方法，用于更多的请求配置需求。如对请求关键字作进一步处理、修改超时时间等\n    fnPreprocessKeyword: null       //搜索过滤数据前，对输入关键字作进一步处理方法。注意，应返回字符串\n};\n```\n\n\u003cb\u003e提示：\u003c/b\u003e\n\n- 在 bootstrap v4 下， `clearable` 为 `true` 时，应引入 [font-awesome](https://fontawesome.com/icons/plus?style=solid) 图标库，该清除按钮使用了 `fa-plus` 图标。\n\n## 二次开发\n\n`git clone` 项目，进入项目目录，执行如下命令：\n\n1. 安装grunt `npm install grunt-cli -g`\n2. 安装依赖 `yarn` 或 `npm install`\n3. 实时开发 `npm start`\n4. 执行测试 `npm test`\n4. 执行编译 `npm run build`\n\n提示：对于 phantomjs 的依赖，如下载超时，可使用其他工具下载，然后放到命令行提示的目录，解压，将解压的目录重命名为命令行提示正在解压的名称。然后重新执行 `npm install`。\n\n## Note on Patches / Pull Requests\n\n* Fork the project.\n* Make your feature addition or bug fix.\n* Send me a pull request. Bonus points for topic branches.\n\n## License\n\nbootstrap-suggest-plugin is released under the MIT license.\n\n该插件由[志文工作室](https://lzw.me)开发和维护。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flzwme%2Fbootstrap-suggest-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flzwme%2Fbootstrap-suggest-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flzwme%2Fbootstrap-suggest-plugin/lists"}