You need to enable JavaScript to run this app. 如何在输入框内容满足校验条件时自动消除表单错误提示
优惠活动
大模型
产品
解决方案
定价
更多

如何在输入框内容满足校验条件时自动消除表单错误提示

原生JS实现表单实时校验(满足条件自动消除错误提示)

你当前的代码仅在表单提交时触发校验,且遇到第一个校验失败的字段就直接终止执行,没有监听输入事件,因此用户修正输入内容后错误提示不会自动消失。可通过以下代码修改实现需求,无需改动原有HTML结构:

完整JS代码

// 等待页面DOM加载完成后绑定输入监听事件
document.addEventListener('DOMContentLoaded', function () {
  // 给每个输入框绑定输入事件,实时校验对应字段
  document.getElementById('name').addEventListener('input', validateName);
  document.getElementById('phone').addEventListener('input', validatePhone);
  document.getElementById('email').addEventListener('input', validateEmail);
  document.getElementById('message').addEventListener('input', validateMessage);
});

// 姓名字段校验
function validateName() {
  const nameVal = document.getElementById('name').value;
  const errorDom = document.getElementById('error_name');
  if (nameVal.length < 5 || !isNaN(nameVal) || nameVal.length > 50) {
    errorDom.innerText = "*请输入有效姓名*";
    return false;
  }
  // 校验通过清空错误提示
  errorDom.innerText = "";
  return true;
}

// 手机号字段校验
function validatePhone() {
  const phoneVal = document.getElementById('phone').value;
  const errorDom = document.getElementById('error_number');
  if (isNaN(phoneVal) || phoneVal.length !== 10) {
    errorDom.innerText = "*请输入有效的10位手机号*";
    return false;
  }
  errorDom.innerText = "";
  return true;
}

// 邮箱字段校验
function validateEmail() {
  const emailVal = document.getElementById('email').value;
  const errorDom = document.getElementById('error_email');
  if (emailVal.indexOf('@') <= 0 || (emailVal.charAt(emailVal.length - 4) != '.' && emailVal.charAt(emailVal.length - 3) != '.')) {
    errorDom.innerText = "*请输入有效邮箱*";
    return false;
  }
  errorDom.innerText = "";
  return true;
}

// 留言字段校验
function validateMessage() {
  const msgVal = document.getElementById('message').value;
  const errorDom = document.getElementById('error_message');
  if (msgVal.length <= 30 || msgVal.length >= 300) {
    errorDom.innerText = "*留言长度需在30到300字符之间*";
    return false;
  }
  errorDom.innerText = "";
  return true;
}

// 表单提交总校验
function validate() {
  // 所有字段校验通过才允许提交
  const allValid = validateName() && validatePhone() && validateEmail() && validateMessage();
  if (allValid) {
    alert("表单提交成功!");
    return true;
  }
  return false;
}

改动说明

  • 将每个字段的校验逻辑拆分为独立函数,提交校验和实时输入校验可复用,无需重复写校验规则
  • 给所有输入框、文本框绑定了input监听事件,用户每输入一次内容就会触发对应字段的校验,内容符合规则时会自动清空对应错误提示
  • 提交校验时会一次性检查所有字段的合法性,所有字段都符合要求才会提交,不会出现前面的字段修正后才提示后面字段错误的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 10:15:01