You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

修改JavaScript实现手机号输入自动清冗余字符并保留后10位

没问题,我帮你调整了代码,让它能自动处理用户输入的各种格式手机号——不管是带空格、括号还是连字符,都会自动清理冗余字符,最终只保留号码的最后10位有效数字,完美对接Viber的聊天唤起功能。下面是完整的实现方案:

解决方案:自动处理手机号并打开Viber聊天

完整代码实现

<input type="tel" id="tel" placeholder="输入手机号(支持带格式)" required />
<input type="button" id="btn-1" value="Viber" onClick="openViberChat()" />

<script>
function openViberChat() {
  const telInput = document.getElementById('tel');
  // 第一步:清理所有非数字字符(空格、括号、连字符等)
  const onlyDigits = telInput.value.replace(/\D/g, '');
  // 第二步:只保留最后10位数字
  const cleanedNumber = onlyDigits.slice(-10);
  
  // 校验:确保清理后是有效的10位号码
  if (cleanedNumber.length !== 10) {
    alert('请输入包含10位有效数字的手机号(支持带格式输入)');
    return;
  }
  
  // 唤起Viber聊天窗口(%2B是URL编码的"+"号,对应你的地区前缀+38)
  window.open(`viber://chat?number=%2B38${cleanedNumber}`, '_self');
}
</script>

关键细节说明

  • 手机号清理逻辑
    • replace(/\D/g, ''):用正则匹配所有非数字字符,直接替换为空,彻底清理格式符号。
    • slice(-10):从字符串末尾截取10位数字,不管用户输入的号码前面有多少前缀(比如区号),只保留核心的10位号码。
  • 用户体验优化
    • 移除了原输入框的maxlength="10"pattern限制,允许用户输入带格式的手机号(比如(123) 456-7890123 456 7890),降低输入门槛。
    • 增加了长度校验,若清理后号码不足10位,弹出提示避免无效的Viber链接调用。
  • 代码可维护性:把点击逻辑抽成独立函数openViberChat(),后续要调整规则(比如修改区号前缀、调整号码长度)时,直接修改函数即可。

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

火山引擎 最新活动