当前位置:首页 > JavaScript

js实现表单验证提交表单提交表单

2026-02-28 22:51:04JavaScript

表单验证的基本实现

表单验证可以通过JavaScript监听表单的提交事件,阻止默认提交行为,检查输入字段的有效性。若验证通过,手动提交表单;若验证失败,显示错误信息。

document.getElementById('myForm').addEventListener('submit', function(event) {
  event.preventDefault();
  const email = document.getElementById('email').value;
  const password = document.getElementById('password').value;

  if (!email.includes('@')) {
    alert('请输入有效的邮箱地址');
    return;
  }

  if (password.length < 6) {
    alert('密码长度不能少于6位');
    return;
  }

  this.submit();
});

实时输入验证

在用户输入时实时验证字段,提供即时反馈。可以为每个输入字段添加inputblur事件监听器。

document.getElementById('email').addEventListener('blur', function() {
  const emailError = document.getElementById('emailError');
  if (!this.value.includes('@')) {
    emailError.textContent = '请输入有效的邮箱地址';
  } else {
    emailError.textContent = '';
  }
});

使用HTML5内置验证

结合HTML5的表单验证属性,如requiredpatternminlength等,减少JavaScript代码量。

js实现表单验证提交表单提交表单

<input type="email" id="email" required>
<input type="password" id="password" minlength="6" required>

显示自定义错误信息

通过setCustomValidity方法设置自定义验证消息,覆盖浏览器默认的提示。

document.getElementById('password').addEventListener('input', function() {
  if (this.value.length < 6) {
    this.setCustomValidity('密码长度不能少于6位');
  } else {
    this.setCustomValidity('');
  }
});

异步验证

对于需要与服务器交互的验证(如用户名是否已存在),可以使用fetch进行异步验证。

js实现表单验证提交表单提交表单

document.getElementById('username').addEventListener('blur', function() {
  fetch('/check-username?username=' + this.value)
    .then(response => response.json())
    .then(data => {
      if (data.exists) {
        document.getElementById('usernameError').textContent = '用户名已存在';
      }
    });
});

验证库的使用

对于复杂表单,可以使用现成的验证库如Validator.js或Yup,简化验证逻辑。

import * as yup from 'yup';

const schema = yup.object().shape({
  email: yup.string().email().required(),
  password: yup.string().min(6).required()
});

schema.validate(formData)
  .then(() => form.submit())
  .catch(err => alert(err.errors[0]));

防止多次提交

在表单提交时禁用提交按钮,防止用户多次点击导致重复提交。

document.getElementById('myForm').addEventListener('submit', function() {
  const submitBtn = document.getElementById('submitBtn');
  submitBtn.disabled = true;
});

验证全部通过后提交

收集所有字段的验证状态,只有全部通过时才允许提交表单。

function validateForm() {
  const isEmailValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email.value);
  const isPasswordValid = password.value.length >= 6;
  return isEmailValid && isPasswordValid;
}

form.addEventListener('submit', function(e) {
  if (!validateForm()) {
    e.preventDefault();
    alert('请正确填写所有字段');
  }
});

标签: 表单js
分享给朋友:

相关文章

jquery 表单

jquery 表单

jQuery 表单操作 使用 jQuery 操作表单可以简化 DOM 操作,提高开发效率。以下是一些常见的表单操作方法: 获取表单元素的值 使用 val() 方法可以获取或设置表单元素的值。 //…

css 制作表单

css 制作表单

使用CSS制作表单的基本方法 创建表单时,HTML负责结构,CSS负责样式。表单元素包括输入框、按钮、下拉菜单等,通过CSS可以统一风格并提升用户体验。 HTML结构示例 <form cla…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…