当前位置:首页 > JavaScript

js实现lookupedit

2026-04-07 00:24:44JavaScript

实现 LookupEdit 功能

LookupEdit 是一种常见的用户界面控件,允许用户在输入时从下拉列表中选择值。以下是使用 JavaScript 和 HTML 实现 LookupEdit 的方法。

HTML 结构

创建一个基本的 HTML 结构,包含输入框和下拉列表。

js实现lookupedit

<div class="lookup-edit-container">
  <input type="text" id="lookupInput" placeholder="Type to search...">
  <div id="dropdownList" class="dropdown-list"></div>
</div>

CSS 样式

为输入框和下拉列表添加样式,确保下拉列表在输入框下方显示。

.lookup-edit-container {
  position: relative;
  width: 300px;
}

#lookupInput {
  width: 100%;
  padding: 8px;
  box-sizing: border-box;
}

.dropdown-list {
  position: absolute;
  width: 100%;
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid #ccc;
  background: white;
  display: none;
}

.dropdown-list div {
  padding: 8px;
  cursor: pointer;
}

.dropdown-list div:hover {
  background-color: #f0f0f0;
}

JavaScript 实现

使用 JavaScript 实现 LookupEdit 的核心功能,包括输入监听、下拉列表显示和选择功能。

js实现lookupedit

document.addEventListener('DOMContentLoaded', function() {
  const input = document.getElementById('lookupInput');
  const dropdown = document.getElementById('dropdownList');

  // 模拟数据源
  const data = ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig', 'Grape'];

  // 输入事件监听
  input.addEventListener('input', function() {
    const inputText = input.value.toLowerCase();
    const filteredData = data.filter(item => 
      item.toLowerCase().includes(inputText)
    );

    updateDropdown(filteredData);
  });

  // 更新下拉列表
  function updateDropdown(items) {
    dropdown.innerHTML = '';
    if (items.length === 0) {
      dropdown.style.display = 'none';
      return;
    }

    items.forEach(item => {
      const div = document.createElement('div');
      div.textContent = item;
      div.addEventListener('click', function() {
        input.value = item;
        dropdown.style.display = 'none';
      });
      dropdown.appendChild(div);
    });

    dropdown.style.display = 'block';
  }

  // 点击外部关闭下拉列表
  document.addEventListener('click', function(event) {
    if (!input.contains(event.target) && !dropdown.contains(event.target)) {
      dropdown.style.display = 'none';
    }
  });
});

功能扩展

如果需要从服务器动态加载数据,可以使用 fetch API 或类似方法。

input.addEventListener('input', async function() {
  const inputText = input.value;
  const response = await fetch(`/api/search?q=${encodeURIComponent(inputText)}`);
  const data = await response.json();
  updateDropdown(data);
});

键盘导航

为提升用户体验,可以添加键盘导航功能。

input.addEventListener('keydown', function(event) {
  const items = dropdown.querySelectorAll('div');
  if (!items.length) return;

  let currentIndex = -1;
  items.forEach((item, index) => {
    if (item.classList.contains('active')) {
      currentIndex = index;
      item.classList.remove('active');
    }
  });

  if (event.key === 'ArrowDown') {
    event.preventDefault();
    currentIndex = (currentIndex + 1) % items.length;
  } else if (event.key === 'ArrowUp') {
    event.preventDefault();
    currentIndex = (currentIndex - 1 + items.length) % items.length;
  } else if (event.key === 'Enter' && currentIndex >= 0) {
    event.preventDefault();
    input.value = items[currentIndex].textContent;
    dropdown.style.display = 'none';
    return;
  }

  if (currentIndex >= 0) {
    items[currentIndex].classList.add('active');
  }
});

以上代码实现了一个基本的 LookupEdit 控件,可以根据实际需求进一步扩展功能。

标签: jslookupedit
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…