当前位置:首页 > 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代码量。

<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进行异步验证。

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;
});

验证全部通过后提交

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

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

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
分享给朋友:

相关文章

vue实现新增表单

vue实现新增表单

Vue 实现新增表单的方法 表单数据绑定 使用 v-model 指令实现表单数据的双向绑定。在 Vue 组件的 data 中定义表单数据的初始值。 data() { return { f…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js节流实现

js节流实现

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