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

带掩码的手机号输入框onfocusout长度验证实现方案咨询

解决方案

1. 调整HTML结构

在手机号输入框下方添加一个错误提示容器,默认隐藏:

<input id="phone1" placeholder="(___) ___-____"/>
<span id="phone-error" style="color: red; display: none;">此字段应为10位字符</span>

2. 实现失焦验证逻辑

借助inputmask提供的unmaskedvalue()方法获取纯数字内容,在focusout事件中完成校验:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/3.3.4/jquery.inputmask.bundle.min.js"></script>
<script>
$("#phone1").inputmask({ "mask": "(999) 999-9999" });

// 绑定失去焦点事件
$("#phone1").on("focusout", function() {
    const pureDigits = $(this).inputmask('unmaskedvalue');
    const errorEl = $("#phone-error");
    
    // 非必填规则:仅当有输入但长度不足10位时显示提示
    if (pureDigits.length > 0 && pureDigits.length !== 10) {
        errorEl.show();
    } else {
        errorEl.hide();
    }
});
</script>

核心细节说明

  • 纯数字提取:inputmask('unmaskedvalue')能直接拿到输入的纯数字,不用手动过滤掩码符号(括号、空格、横杠),准确性更高。
  • 非必填适配:只有用户输入了部分内容但未凑齐10位数字时才触发提示,完全不输入则不显示错误,符合需求。
  • 上限无需处理:原掩码已经限制最多输入10位数字,所以不用考虑长度超限的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:07:10