如何实现文本框的自动完成功能

摘要:实现文本框自动完成功能的方法 文本框的自动完成功能通常可以通过编程语言中的库或框架来实现。以下是一些常见的实现方式: HTML + JavaScript 您可以使用HTML和JavaScript结合来创建一个简单的自动完成功能。这里是一个基本的示例: <!DOCTYPE html> &l

实现文本框自动完成功能的方法

文本框的自动完成功能通常可以通过编程语言中的库或框架来实现。以下是一些常见的实现方式:

HTML + JavaScript

您可以使用HTML和JavaScript结合来创建一个简单的自动完成功能。这里是一个基本的示例:

如何实现文本框的自动完成功能

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>文本框自动完成</title> <style> /* CSS样式 */ #divInput { margin: 20px auto; padding: 20px; width: 280px; background-color: bisque; } #divInput ul, #divInput li { padding: 0; margin: 0; list-style: none; } #autoInput { width: 240px; padding: 0 20px; margin: 0; border: 0; height: 36px; line-height: 36px; } #popInput { position: relative; } #uiInput { position: absolute; top: 0; left: 0; width: 100%; border-top: #d8d8d8 1px solid; border-left: #d8d8d8 1px solid; border-right: #d8d8d8 1px solid; } #uiInput li { padding-left: 20px; border-bottom: #d8d8d8 1px solid; line-height: 28px; background-color: #f5f5f5; cursor: pointer; } </style> </head> <body> <div id="divInput"> <input type="text" placeholder="请输入英文、数字测试自动完成" id="autoInput" /> <div id="popInput"> <ul id="uiInput"></ul> </div> </div> <script> var arr = ["123", "234", "456a", "123345", "aaaaa", "bbbb", "88888", "asai", "asai.cc", "www.asai.cc"]; var inputDom = document.getElementById("autoInput"); var popDom = document.getElementById("uiInput"); function listenInput(e) { var _val = e.target.value.trim(); var _lis = []; if (_val) { arr.forEach((str) => { if (str.indexOf(_val) !== -1) { _lis.push("<li>" + str.replace(_val, "<font color=red>" + _val + "</font>") + "</li>"); } }); } popDom.innerHTML = _lis.join(""); } function listenClick(e) { if (e.target.tagName.toLowerCase() === "li") { var _val = e.target.innerText; inputDom.value = _val; } } inputDom.addEventListener("input", listenInput, false); popDom.addEventListener("click", listenClick, false); window.addEventListener("beforeunload", function (e) { inputDom.removeEventListener("input", listenInput, false); popDom.removeEventListener("click", listenClick, false); }); </script> </body> </html>

在这个例子中,我们创建了一个文本输入框和一个下拉列表,当用户在输入框中输入文字时,会动态显示与输入内容相匹配的选项。如果用户点击了某个选项,则该选项会被插入到输入框中。

jQuery Autocomplete

如果您熟悉jQuery,可以使用其提供的Autocomplete插件来实现更复杂的自动完成功能。以下是一个使用jQuery Autocomplete的示例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jQuery Autocomplete</title> <link rel="stylesheet" type="text/css" href="jquery.autocomplete.css" /> <script src="jquery.autocomplete.js" type="text/javascript"></script> <style> /* CSS样式 */ #divInput { margin: 20px auto; padding: 20px; width: 280px; background-color: bisque; } #divInput ul, #divInput li { padding: 0; margin: 0; list-style: none; } #autoInput { width: 240px; padding: 0 20px; margin: 0; border: 0; height: 36px; line-height: 36px; } #popInput { position: relative; } #uiInput { position: absolute; top: 0; left: 0; width: 100%; border-top: #d8d8d8 1px solid; border-left: #d8d8d8 1px solid; border-right: #d8d8d8 1px solid; } #uiInput li { padding-left: 20px; border-bottom: #d8d8d8 1px solid; line-height: 28px; background-color: #f5f5f5; cursor: pointer; } </style> </head> <body> <div id="divInput"> <input type="text" id="name" /> </div> <script> $(document).ready(function(){ var info = [ { name: "张三", sex: "男", phone: "15633334444" }, { name: "李四", sex: "男", phone: "13344445555" }, // ... 更多数据 ]; $("#name").autocomplete(info, { max: 10, // 列表里的条目数 minChars: 0, // 自动完成激活之前填入的最小字符 width: 200, // 提示的宽度,溢出隐藏 scrollHeight: 300, // 提示的高度,溢出显示滚动条 matchContains: true, // 包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示 mustMatch: false, autoFill: true, // 自动填充 formatItem: function(row, i, max) { return row.name; }, formatMatch: function(row, i, max) { return row.name; }, formatResult: function(row) { return row.to; } }).result(function(event, row, formatted){ // 关联出其他信息 if(row == undefined || row.name == undefined ) { } else { $("#sex").val(row.sex); $("#phone").val(row.phone); } }); }); </script> </body> </html>

在这个例子中,我们使用了jQuery Autocomplete插件来实现自动完成功能。当用户在文本框中输入时,会显示与输入内容相匹配的数据列表。如果用户选择了某个项目,那么除了显示该项的名称外,还可以自动填充与其相关的其他信息。

以上两种方法都是基于客户端实现的,不需要服务器端支持。如果您需要服务器端支持,例如从数据库中获取数据进行自动完成,那么您可能需要使用Ajax技术来实现客户端和服务器之间的数据交换。

关键词:html代码string

免责声明:《如何实现文本框的自动完成功能来源于互联网,仅供参考。如有疑问,请及时联系本站处理。