当前位置:首页 > 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
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现轮播图

js实现轮播图

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

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现密码

js实现密码

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

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…