菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HOW TO

HowTo Home

Menus

图标栏 菜单图标 手风琴 选项卡 垂直选项卡 选项卡标题 全页选项卡 悬停选项卡 顶部导航 响应式顶栏 分体式导航 带图标的导航栏 搜索菜单 搜索栏 固定侧边栏 侧边导航 响应式侧边栏 全屏导航 画布外菜单 悬停侧边栏按钮 带图标的侧边栏 水平滚动菜单 垂直菜单 底部导航 响应式底部导航 底部边框导航链接 右对齐菜单链接 居中文档链接 等宽菜单链接 固定菜单 滚动时下拉菜单 滚动时隐藏导航栏 滚动时收缩导航栏 粘性导航栏 导航栏上的图片 悬停下拉菜单 点击下拉菜单 级联下拉菜单 顶栏中的下拉菜单 侧边栏中的下拉菜单 响应式导航栏下拉菜单 子导航菜单 下拉菜单 巨型菜单 移动菜单 幕布菜单 折叠侧边栏 折叠侧边面板 分页 面包屑 按钮组 垂直按钮组 粘性社交栏 药丸导航 响应式标题

图片

幻灯片 幻灯片画廊 模态图像 灯箱 响应式图像网格 图像网格 图像画廊 可滚动图像画廊 选项卡画廊 图像叠加淡入 图像叠加滑动 图像叠加缩放 图像叠加标题 图像叠加图标 图像效果 黑白图像 图像文本 图像文本块 透明图像文本 全页图像 图像上的表单 英雄图像 模糊背景图像 滚动时更改背景 并排图像 圆角图像 头像图像 响应式图像 居中文档 缩略图 图像周围的边框 团队介绍 粘性图像 翻转图像 抖动图像 作品集画廊 带过滤器的作品集 图像缩放 图像放大镜 图像对比度滑块 图标

按钮

警报按钮 轮廓按钮 分体式按钮 动画按钮 渐变按钮 图像上的按钮 社交媒体按钮 阅读更多/阅读更少 加载按钮 下载按钮 药丸按钮 通知按钮 图标按钮 下一个/上一个按钮 导航中的更多按钮 块状按钮 文本按钮 圆形按钮 滚动到顶部按钮

表单

登录表单 注册表单 结账表单 联系表单 社交登录表单 注册表单 带图标的表单 新闻通讯 堆叠表单 响应式表单 弹出表单 内联表单 清除输入字段 隐藏数字箭头 复制文本到剪贴板 动画搜索 搜索按钮 全屏搜索 导航栏中的输入字段 导航栏中的登录表单 自定义复选框/单选按钮 自定义选择 切换开关 检查复选框 检测大写锁定 按 Enter 键触发按钮 密码验证 切换密码可见性 多步表单 自动完成 关闭自动完成 关闭拼写检查 文件上传按钮 空输入验证

Filters

筛选列表 筛选表格 筛选元素 筛选下拉菜单 排序列表 排序表格

表格

斑马条纹表 居中文档 全宽表 嵌套表 并排表 响应式表 对比表

More

全屏视频 模态框 删除模态框 时间轴 滚动指示器 进度条 技能条 范围滑块 颜色选择器 电子邮件字段 工具提示 悬停时显示元素 弹出窗口 可折叠 日历 HTML 包含 待办事项列表 加载器 徽章 星级评分 用户评分 叠加效果 联系人卡片 卡片 翻转卡片 个人资料卡片 产品卡片 警报 标注 注释 标签 丝带 标签云 圆圈 样式 HR 优惠券 列表组 带徽章的列表组 无项目符号的列表 响应式文本 镂空文本 发光文本 固定页脚 粘性元素 等高 清除浮动 响应式浮动 Snackbar 全屏窗口 滚动绘图 平滑滚动 渐变背景滚动 粘性标题 滚动时缩小标题 定价表 视差 纵横比 响应式 Iframes 切换喜欢/不喜欢 切换隐藏/显示 切换深色模式 切换文本 切换类 添加类 删除类 更改类 活动类 树状视图 删除小数点 删除属性 离线检测 查找隐藏元素 重定向网页 格式化数字 悬停缩放 翻转框 垂直居中 DIV 中的居中按钮 居中列表 悬停过渡 箭头 形状 下载链接 全高元素 浏览器窗口 自定义滚动条 隐藏滚动条 显示/强制显示滚动条 设备外观 Contenteditable 边框 占位符颜色 禁用文本区域的调整大小 禁用文本选择 文本选择颜色 项目符号颜色 垂直线 分隔符 文本分隔符 动画图标 倒计时计时器 打字机 即将推出页面 聊天消息 弹出聊天窗口 分屏 客户评价 部分计数器 引言幻灯片 可关闭的列表项 典型设备断点 可拖动的 HTML 元素 JS 媒体查询 语法高亮器 JS 动画 JS 字符串长度 JS 指数运算 JS 默认参数 JS 随机数 JS 对数字数组进行排序 JS 扩展运算符 JS 滚动到视图 获取当前日期 获取当前 URL 获取当前屏幕尺寸 获取 Iframe 元素

网站

创建免费网站 制作网站 制作静态网站 托管静态网站 制作网站 (W3.CSS) 制作网站 (BS3) 制作网站 (BS4) 制作网站 (BS5) 创建和查看网站 创建 Link Tree 网站 创建作品集 创建简历 制作餐厅网站 制作商业网站 制作 WebBook 居中文档 联系部分 关于页面 大标题 示例网站

Grid

2 列布局 3 列布局 4 列布局 展开式网格 列表网格视图 混合列布局 列卡片 锯齿布局 博客布局

Google

Google Charts Google Fonts Google Font 配对 Google 设置分析

Converters

转换重量 转换温度 转换长度 转换速度

博客

获得开发人员工作 成为前端开发人员 聘请开发人员

How TO - Autocomplete


了解如何创建自动完成功能。


Autocomplete

开始输入


自己动手试一试 »


创建自动完成表单

步骤 1) 添加 HTML

示例

<!--确保表单的 autocomplete 功能已关闭:-->
<form autocomplete="off" action="/action_page.php">
  <div class="autocomplete" style="width:300px;">
    <input id="myInput" type="text" name="myCountry" placeholder="国家">
  </div>
  <input type="submit">
</form>

步骤 2) 创建 JavaScript 数组

示例

世界所有国家的数组

var countries = ["Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antigua &amp; Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia &amp; Herzegovina","Botswana","Brazil","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central Arfrican Republic","Chad","Chile","China","Colombia","Congo","Cook Islands","Costa Rica","Cote D Ivoire","Croatia","Cuba","Curacao","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Polynesia","French West Indies","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guam","Guatemala","Guernsey","Guinea","Guinea Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauro","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","North Korea","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russia","Rwanda","Saint Pierre &amp; Miquelon","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","St Kitts &amp; Nevis","St Lucia","St Vincent","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Timor L'Este","Togo","Tonga","Trinidad &amp; Tobago","Tunisia","Turkey","Turkmenistan","Turks &amp; Caicos","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Virgin Islands (US)","Yemen","Zambia","Zimbabwe"];

步骤 3) 添加 CSS

容器必须具有“相对”定位。

示例

* { box-sizing: border-box; }
body {
  font: 16px Arial;
}
.autocomplete {
  /*容器必须是相对定位:*/
  position: relative;
  display: inline-block;
}
input {
  border: 1px solid transparent;
  background-color: #f1f1f1;
  padding: 10px;
  font-size: 16px;
}
input[type=text] {
  background-color: #f1f1f1;
  width: 100%;
}
input[type=submit] {
  background-color: DodgerBlue;
  color: #fff;
}
.autocomplete-items {
  position: absolute;
  border: 1px solid #d4d4d4;
  border-bottom: none;
  border-top: none;
  z-index: 99;
  /*将自动完成项定位为与容器相同宽度:*/
  top: 100%;
  left: 0;
  right: 0;
}
.autocomplete-items div {
  padding: 10px;
  cursor: pointer;
  background-color: #fff;
  border-bottom: 1px solid #d4d4d4;
}
.autocomplete-items div:hover {
  /*悬停在项目上时:*/
  background-color: #e9e9e9;
}
.autocomplete-active {
  /*使用箭头键导航项目时:*/
  background-color: DodgerBlue !important;
  color: #ffffff;
}


步骤 4) 添加 JavaScript

示例

function autocomplete(inp, arr) {
  /*此自动完成函数接受两个参数,
  文本字段元素和一个可能的自动完成值的数组:*/
  var currentFocus;
  /*当有人在文本字段中输入内容时执行函数:*/
  inp.addEventListener("input", function(e) {
      var a, b, i, val = this.value;
      /*关闭任何已打开的自动完成值列表*/
      closeAllLists();
      if (!val) { return false;}
      currentFocus = -1;
      /*创建将包含项目(值)的 DIV 元素:*/
      a = document.createElement("DIV");
      a.setAttribute("id", this.id + "autocomplete-list");
      a.setAttribute("class", "autocomplete-items");
      /*将 DIV 元素作为自动完成容器的子项追加:*/
      this.parentNode.appendChild(a);
      /*对于数组中的每个项目...*/
      for (i = 0; i < arr.length; i++) {
        /*检查项目是否以与文本字段值相同的字母开头:*/
        if (arr[i].substr(0, val.length).toUpperCase() == val.toUpperCase()) {
          /*为每个匹配的元素创建 DIV 元素:*/
          b = document.createElement("DIV");
          /*将匹配的字母加粗:*/
          b.innerHTML = "<strong>" + arr[i].substr(0, val.length) + "</strong>";
          b.innerHTML += arr[i].substr(val.length);
          /*插入一个 input 字段,其中将保存当前数组项的值:*/
          b.innerHTML += "<input type='hidden' value='" + arr[i] + "'>";
          /*当有人单击项目值(DIV 元素)时执行函数:*/
              b.addEventListener("click", function(e) {
              /*为自动完成文本字段插入值:*/
              inp.value = this.getElementsByTagName("input")[0].value;
              /*关闭自动完成值列表,
              (或任何其他打开的自动完成值列表:*/
              closeAllLists();
          });
          a.appendChild(b);
        }
      }
  });
  /*当有人在键盘上按下按键时执行函数:*/
  inp.addEventListener("keydown", function(e) {
      var x = document.getElementById(this.id + "autocomplete-list");
      if (x) x = x.getElementsByTagName("div");
      if (e.keyCode == 40) {
        /*如果按下箭头 DOWN 键,
        则增加 currentFocus 变量:*/
        currentFocus++;
        /*并使当前项目更加可见:*/
        addActive(x);
      } else if (e.keyCode == 38) { // up
        /*如果按下箭头 UP 键,
        则减少 currentFocus 变量:*/
        currentFocus--;
        /*并使当前项目更加可见:*/
        addActive(x);
      } else if (e.keyCode == 13) {
        /*如果按下 ENTER 键,则阻止表单提交,*/
        e.preventDefault();
        if (currentFocus > -1) {
          /*然后模拟单击“活动”项目:*/
          if (x) x[currentFocus].click();
        }
      }
  });
  function addActive(x) {
    /*一个将项目分类为“活动”的函数:*/
    if (!x) return false;
    /*首先从所有项目中删除“active”类:*/
    removeActive(x);
    if (currentFocus >= x.length) currentFocus = 0;
    if (currentFocus < 0) currentFocus = (x.length - 1);
    /*添加类“autocomplete-active”:*/
    x[currentFocus].classList.add("autocomplete-active");
  }
  function removeActive(x) {
    /*一个从所有自动完成项目中删除“active”类的函数:*/
    for (var i = 0; i < x.length; i++) {
      x[i].classList.remove("autocomplete-active");
    }
  }
  function closeAllLists(elmnt) {
    /*关闭文档中的所有自动完成列表,
    排除作为参数传递的列表:*/
    var x = document.getElementsByClassName("autocomplete-items");
    for (var i = 0; i < x.length; i++) {
      if (elmnt != x[i] && elmnt != inp) {
      x[i].parentNode.removeChild(x[i]);
    }
  }
}
/*当有人在文档中单击时执行函数:*/
document.addEventListener("click", function (e) {
    closeAllLists(e.target);
});
}

步骤 5) 初始化“myInput”上的自动完成效果

示例

将 countries 数组作为 autocomplete 函数的第二个参数传递

<script>
autocomplete(document.getElementById("myInput"), countries);
</script>
自己动手试一试 »

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持