You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSN输入框开发需求:仅显示后四位+显示/隐藏切换功能

实现带显示/隐藏切换的SSN输入框

下面是完整的实现方案,满足默认仅显示最后四位、支持显示/隐藏完整SSN的需求,同时处理了SSN的格式化输入:

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SSN Input with Toggle</title>
    <style>
        .ssn-container {
            position: relative;
            display: inline-block;
        }

        .ssn-input {
            padding-right: 30px;
            font-size: 1rem;
            padding: 8px 12px;
            border: 1px solid #ccc;
            border-radius: 4px;
            width: 180px;
        }

        .toggle-btn {
            position: absolute;
            right: 8px;
            top: 50%;
            transform: translateY(-50%);
            background: none;
            border: none;
            cursor: pointer;
            font-size: 1rem;
        }
    </style>
</head>
<body>
    <div class="ssn-container">
        <input type="password" id="ssnInput" class="ssn-input" placeholder="Enter SSN">
        <button id="toggleBtn" class="toggle-btn" aria-label="Toggle SSN visibility">👁️</button>
    </div>

    <script>
        const ssnInput = document.getElementById('ssnInput');
        const toggleBtn = document.getElementById('toggleBtn');
        let isVisible = false;
        let rawSsn = ''; // 存储原始完整SSN数字

        // 处理输入:过滤非数字+自动格式化
        ssnInput.addEventListener('input', (e) => {
            const inputValue = e.target.value.replace(/\D/g, '');
            rawSsn = inputValue;
            updateDisplayValue();
        });

        // 更新输入框显示内容
        function updateDisplayValue() {
            let displayValue = '';
            if (!isVisible && rawSsn.length >= 4) {
                // 默认掩码模式:只显示最后四位
                displayValue = '****-**-' + rawSsn.slice(-4);
            } else {
                // 显示完整格式化SSN
                if (rawSsn.length > 0) {
                    displayValue += rawSsn.substring(0, 3);
                    if (rawSsn.length > 3) displayValue += '-' + rawSsn.substring(3, 5);
                    if (rawSsn.length > 5) displayValue += '-' + rawSsn.substring(5, 9);
                }
            }
            ssnInput.value = displayValue;
        }

        // 切换显示/隐藏状态
        toggleBtn.addEventListener('click', () => {
            isVisible = !isVisible;
            // 切换输入框类型与按钮图标
            ssnInput.type = isVisible ? 'text' : 'password';
            toggleBtn.textContent = isVisible ? '🙈' : '👁️';
            toggleBtn.setAttribute('aria-label', isVisible ? 'Hide SSN' : 'Show SSN');
            updateDisplayValue();
        });
    </script>
</body>
</html>

核心功能说明

  • 默认掩码显示:输入时自动过滤非数字字符,默认仅展示最后四位,前六位用****-**替代
  • 显示/隐藏切换:点击右侧按钮可切换完整SSN与掩码状态,同时切换输入框type属性(password/text)增强安全性
  • 自动格式化:输入过程中自动添加SSN标准连字符分隔,提升输入体验
  • 原始值独立存储:用rawSsn保存用户输入的完整数字,确保切换显示时能正确还原格式化后的完整内容

可选优化点

  • 添加输入长度限制(最多9位数字),确保符合SSN格式规范
  • 生产环境中需对SSN的传输、存储做加密处理
  • 可补充输入验证提示,比如当输入长度不足9位时给出提示

内容的提问来源于stack exchange,提问作者Pankaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:33:31