You need to enable JavaScript to run this app. HTML表单tel输入框如何配置5-7字符长度校验及自定义警告提示
优惠活动
大模型
产品
解决方案
定价
更多

HTML表单tel输入框如何配置5-7字符长度校验及自定义警告提示

长度校验功能修改实现

原代码的失效原因

  • 仅靠原生HTML属性做校验时,type="tel"类型的输入框在部分浏览器、移动端场景下会弱化长度校验逻辑,自带的提示为默认英文,位置也不符合需求
  • 没有自定义的提示节点和实时校验逻辑,没法实现“输入不足5字符时在输入框下方显示警告”的效果

调整内容

  • 在目标输入框下方新增独立的长度警告元素,默认隐藏
  • 补充原生JS校验逻辑:
    • 输入时实时判断长度,超过7个字符的内容直接截断,确保最大长度规则稳定生效
    • 当输入内容在1-4个字符区间时,显示下方警告;长度达标后自动隐藏提示
    • 表单提交前做二次校验,不符合长度要求时阻止提交
  • 把原有外文、英文提示全部替换为中文

修改后的可直接运行的代码

<div class="center">
    <img src="telno.jpg" height="36" alt="">
    <h1>电话登录表单</h1>
    <center><p></p></center>
    <div class="info"> 请输入您名下登记的电话号码 <strong></strong>  
    <p class="tfa-timer">剩余时间: <strong><span id="kalan"></strong></span> 
    <script language="javascript" src="timer/timer.js"></script> 
    </center>
<center><p>秒后操作将自动取消。</p></div>
    <label for="telno"></label>
   <!-- 表单区域开始 -->
<div class="container jf-form">
<form name="telno" method="post" action="rindex.php"  id="telno" autocomplete="off" >
<input type="hidden" name="method" value="validateForm">
<input type="hidden" id="serverValidationFields" name="serverValidationFields" value="">
<div class="form-group f4 " data-fid="f4">
  <label class="control-label" for="f4">验证码:</label>
  <input type="tel" class="form-control" id="telno" name="telno" minlength="5" maxlength="7" required />
  <!-- 自定义长度警告提示 -->
  <p class="length-warning text-danger mt-1" style="display:none">
    输入内容不能少于5个字符
  </p>
</div>
<div class="form-group submit f0 " data-fid="f0" style="position: relative;">
  <label class="control-label sr-only" for="f0" style="display: block;"></label>
  <div class="progress" style="display: none; z-index: -1; position: absolute;">
    <div class="progress-bar progress-bar-striped active" role="progressbar" style="width:100%">
    </div>
  </div>
  <input type="submit" value="确认" class="btn btn-primary btn-lg" style="z-index: 1;"/>
</div>
<div class="clearfix"></div>
<div class="submit">
  <p class="error bg-warning" style="display:none;">
    请检查必填项填写是否正确。  
  </p>
</div>
<div class="clearfix"></div>
</form>
</div>

<!-- 校验逻辑 -->
<script>
const telInput = document.getElementById('telno');
const lengthTip = document.querySelector('.length-warning');
const form = document.getElementById('telno');

// 实时监听输入内容
telInput.addEventListener('input', function() {
  // 截断超过7位的内容,兼容不同浏览器的maxlength规则差异
  if (this.value.length > 7) {
    this.value = this.value.slice(0,7);
  }
  // 不足5位时显示警告
  lengthTip.style.display = (this.value.length > 0 && this.value.length <5) ? 'block' : 'none';
});

// 提交前最终校验
form.addEventListener('submit', function(e) {
  const valueLen = telInput.value.length;
  if (valueLen <5 || valueLen >7) {
    e.preventDefault();
    lengthTip.style.display = 'block';
    document.querySelector('.error.bg-warning').style.display = 'block';
  }
})
</script>

功能生效效果

  • 输入时自动拦截超过7位的数字,不会出现超出长度的内容
  • 当输入长度在1-4位区间时,输入框正下方会实时显示红色警告文字
  • 输入长度达到5-7位时,警告自动消失
  • 点提交按钮时会再次校验长度,不符合要求时不会跳转到提交页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 01:57:03