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

JavaScript实现输入数字时替换文本框中的下划线

实现数字逐个替换下划线的文本框功能

可以通过监听输入框的输入事件,过滤非数字字符并动态拼接字符串来实现这个需求,以下是具体的实现方案:

代码实现

HTML部分

创建一个输入框,初始值设为带括号和下划线的格式:

<input type="text" id="numberInput" value="(_________)" maxlength="11">

注:maxlength设为11是因为括号占2位,9个下划线占9位,总长度11,避免输入超出格式范围

JavaScript部分

编写逻辑处理输入,实现数字逐个替换下划线:

const input = document.getElementById('numberInput');
const placeholderUnderscores = '_________'; // 初始下划线的数量
const maxDigits = placeholderUnderscores.length;

// 监听输入事件
input.addEventListener('input', function() {
    // 移除括号,提取原始输入内容
    let rawContent = this.value.replace(/[()]/g, '');
    // 只保留数字字符,过滤其他输入
    let validDigits = rawContent.replace(/\D/g, '');
    // 限制数字长度不超过下划线的数量
    validDigits = validDigits.slice(0, maxDigits);
    // 计算剩余需要保留的下划线
    const remainingUnderscores = placeholderUnderscores.slice(validDigits.length);
    // 重新拼接成带括号的目标格式
    this.value = `(${validDigits}${remainingUnderscores})`;
});

// 优化聚焦体验:默认状态下聚焦时光标定位到第一个下划线位置
input.addEventListener('focus', function() {
    if (this.value === `(${placeholderUnderscores})`) {
        this.setSelectionRange(1, 1);
    }
});

功能说明

  • 仅允许输入数字:通过replace(/\D/g, '')过滤所有非数字字符,确保输入内容合规
  • 自动替换下划线:输入的数字会依次替换前面的下划线,剩余未输入的位置保持下划线
  • 支持删除操作:当删除数字时,下划线会自动补回到对应的位置
  • 光标定位优化:首次聚焦时光标自动跳到第一个可输入位置,提升用户体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:33:19