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

使用jQuery制作手机号输入掩码,如何通过数组优化禁止0开头的校验代码

jQuery手机号输入掩码功能优化方案

你原有代码中的大量重复分支判断完全可以简化,无需逐个枚举合法的开头数字,也可根据需求选择用数组管理合法号段,优化后代码如下:

优化后代码

JavaScript

// 提前缓存错误提示元素,避免每次触发事件重复查询DOM
const phoneErrorEl = document.getElementById("PhoneError");
const inputMask = () => '(00) 0 0000-0000';
const noZero = {
  onKeyPress: function(val, e, field, options) {
    const curVal = field.val();
    // 输入长度不足2位或者(后第一位不是0,均清空错误提示
    if (curVal.length < 2 || curVal[1] !== '0') {
      phoneErrorEl.innerHTML = '';
    }
    // 匹配到(0开头的非法输入,触发错误提示并修正输入值
    if (curVal === '(0') {
      phoneErrorEl.innerHTML = '请勿以0开头';
      field.val(curVal.slice(0, 1));
    }
    field.mask(inputMask.apply({}, arguments), options);
  }
};

$("input[type='tel']").mask(inputMask, noZero);

HTML(无修改)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.11/jquery.mask.min.js"></script>
<input type="tel" id="tel" placeholder="tel">
<div id="PhoneError" style="color:red"></div>

优化说明

  • 去掉了10余行重复的分支判断,仅用2个条件覆盖所有场景,代码量大幅缩减
  • 提前缓存DOM元素,减少重复DOM查询的性能损耗
  • 逻辑扩展性更强,后续调整规则无需大量修改代码

数组实现号段判断方案

如果你需要用数组管理合法开头号段(比如后续要限制仅允许13、15等号段开头),可以参考如下写法:

const phoneErrorEl = document.getElementById("PhoneError");
// 用数组存储所有允许的开头数字
const allowedFirstNums = ['1','2','3','4','5','6','7','8','9'];
const inputMask = () => '(00) 0 0000-0000';
const noZero = {
  onKeyPress: function(val, e, field, options) {
    const curVal = field.val();
    if (curVal.length < 2 || allowedFirstNums.includes(curVal[1])) {
      phoneErrorEl.innerHTML = '';
    } else {
      phoneErrorEl.innerHTML = '请勿以0开头';
      field.val(curVal.slice(0, 1));
    }
    field.mask(inputMask.apply({}, arguments), options);
  }
};

$("input[type='tel']").mask(inputMask, noZero);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:36:07