当前位置:首页 > JavaScript

js实现@功能

2026-04-07 01:17:45JavaScript

实现@功能的JavaScript方法

监听输入事件

使用addEventListener监听输入框的inputkeyup事件,检测用户是否输入了@符号。

const inputElement = document.getElementById('commentInput');
inputElement.addEventListener('input', function(event) {
    const text = event.target.value;
    const lastChar = text.slice(-1);

    if (lastChar === '@') {
        showUserList();
    }
});

显示用户列表

当检测到@符号时,显示一个包含用户名的下拉列表供用户选择。

function showUserList() {
    const userList = ['用户1', '用户2', '用户3'];
    const dropdown = document.createElement('div');
    dropdown.className = 'user-dropdown';

    userList.forEach(user => {
        const item = document.createElement('div');
        item.textContent = user;
        item.addEventListener('click', function() {
            insertUsername(user);
            dropdown.remove();
        });
        dropdown.appendChild(item);
    });

    document.body.appendChild(dropdown);
}

插入用户名

用户点击下拉列表中的用户名后,将用户名插入到输入框中@符号之后。

function insertUsername(username) {
    const inputElement = document.getElementById('commentInput');
    const text = inputElement.value;
    const atIndex = text.lastIndexOf('@');

    inputElement.value = text.slice(0, atIndex) + '@' + username + ' ';
    inputElement.focus();
}

样式调整

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

.user-dropdown {
    position: absolute;
    border: 1px solid #ccc;
    background: white;
    max-height: 150px;
    overflow-y: auto;
}

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

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

完整示例

将上述代码整合到一个完整的HTML文件中,确保所有功能正常工作。

js实现@功能

<!DOCTYPE html>
<html>
<head>
    <style>
        .user-dropdown {
            position: absolute;
            border: 1px solid #ccc;
            background: white;
            max-height: 150px;
            overflow-y: auto;
        }
        .user-dropdown div {
            padding: 8px;
            cursor: pointer;
        }
        .user-dropdown div:hover {
            background: #f0f0f0;
        }
    </style>
</head>
<body>
    <textarea id="commentInput" rows="4" cols="50"></textarea>
    <script>
        const inputElement = document.getElementById('commentInput');
        inputElement.addEventListener('input', function(event) {
            const text = event.target.value;
            const lastChar = text.slice(-1);

            if (lastChar === '@') {
                showUserList();
            }
        });

        function showUserList() {
            const userList = ['用户1', '用户2', '用户3'];
            const dropdown = document.createElement('div');
            dropdown.className = 'user-dropdown';

            userList.forEach(user => {
                const item = document.createElement('div');
                item.textContent = user;
                item.addEventListener('click', function() {
                    insertUsername(user);
                    dropdown.remove();
                });
                dropdown.appendChild(item);
            });

            document.body.appendChild(dropdown);
        }

        function insertUsername(username) {
            const inputElement = document.getElementById('commentInput');
            const text = inputElement.value;
            const atIndex = text.lastIndexOf('@');

            inputElement.value = text.slice(0, atIndex) + '@' + username + ' ';
            inputElement.focus();
        }
    </script>
</body>
</html>

注意事项

  • 确保用户列表下拉框的位置正确,可能需要根据输入框的位置动态计算。
  • 考虑添加键盘导航功能,允许用户使用上下箭头选择用户名。
  • 在实际应用中,用户列表可能来自后端API,需使用异步请求获取数据。

标签: 功能js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

vue实现后台功能

vue实现后台功能

Vue 实现后台功能的方法 Vue.js 是一个流行的前端框架,适合构建后台管理系统。以下是实现后台功能的常见方法和步骤。 项目初始化 使用 Vue CLI 或 Vite 初始化项目: # Vue…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…