JavaScript:验证输入

简介: 【9月更文挑战第02天】

JavaScript:验证输入

在Web开发中,输入验证是确保用户提交的数据符合特定标准的重要环节。使用JavaScript进行客户端验证可以提供即时的反馈,增强用户体验。以下是使用JavaScript进行输入验证的详细讲解和代码示例。

1. 基本HTML输入验证

HTML5提供了一些内置的属性来进行基本的输入验证,如requiredtypeminmax等。

<form id="registrationForm">
    <label for="username">Username (required):</label>
    <input type="text" id="username" name="username" required>

    <label for="age">Age (number):</label>
    <input type="number" id="age" name="age" min="18" max="100">

    <input type="submit" value="Submit">
</form>

2. 使用JavaScript进行自定义验证

检查输入是否为空

document.getElementById('registrationForm').addEventListener('submit', function(event) {
   
    var username = document.getElementById('username').value;
    if (!username) {
   
        alert('Username is required.');
        event.preventDefault(); // 阻止表单提交
    }
});

检查输入是否符合特定格式

// 检查电子邮件地址
function isValidEmail(email) {
   
    var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
    return emailRegex.test(email);
}

// 表单提交事件
document.getElementById('emailForm').addEventListener('submit', function(event) {
   
    var email = document.getElementById('email').value;
    if (!isValidEmail(email)) {
   
        alert('Please enter a valid email address.');
        event.preventDefault();
    }
});

3. 实时验证

在用户输入时实时验证,可以提供更好的用户体验。

document.getElementById('username').addEventListener('input', function() {
   
    var username = this.value;
    if (username.length < 3) {
   
        this.setCustomValidity('Username must be at least 3 characters long.');
    } else {
   
        this.setCustomValidity('');
    }
});

4. 正则表达式

JavaScript中的正则表达式是进行模式匹配的强大工具,可用于复杂的验证。

// 正则表达式验证密码强度
var passwordPattern = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
document.getElementById('password').addEventListener('input', function() {
   
    if (!passwordPattern.test(this.value)) {
   
        this.setCustomValidity('Password must contain at least 8 characters, including uppercase, lowercase, and numbers.');
    } else {
   
        this.setCustomValidity('');
    }
});

5. 表单重置

在验证失败后,可能需要重置表单以清除错误信息。

document.getElementById('resetButton').addEventListener('click', function() {
   
    document.getElementById('myForm').reset();
    // 清除自定义验证消息
    document.getElementById('myForm').querySelectorAll('input').forEach(function(input) {
   
        input.setCustomValidity('');
    });
});

6. 代码示例

以下是一个完整的示例,展示了如何使用JavaScript进行表单验证。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Input Validation Example</title>
</head>
<body>
    <form id="myForm">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required>
        <br>

        <label for="email">Email:</label>
        <input type="email" id="email" name="email">
        <br>

        <label for="password">Password:</label>
        <input type="password" id="password" name="password">
        <br>

        <input type="submit" value="Submit">
        <button type="reset" id="resetButton">Reset</button>
    </form>

    <script>
        // 验证电子邮件
        document.getElementById('email').addEventListener('input', function() {
    
            if (!isValidEmail(this.value)) {
    
                this.setCustomValidity('Please enter a valid email address.');
            } else {
    
                this.setCustomValidity('');
            }
        });

        // 验证表单提交
        document.getElementById('myForm').addEventListener('submit', function(event) {
    
            var username = document.getElementById('username').value;
            var password = document.getElementById('password').value;
            if (username.length < 3 || !passwordPattern.test(password)) {
    
                alert('Please correct the errors before submitting.');
                event.preventDefault();
            }
        });

        // 重置表单
        document.getElementById('resetButton').addEventListener('click', function() {
    
            document.getElementById('myForm').reset();
            document.getElementById('myForm').querySelectorAll('input').forEach(function(input) {
    
                input.setCustomValidity('');
            });
        });
    </script>
</body>
</html>
目录
相关文章
|
6月前
|
JSON 算法 安全
Nest.js JWT 验证授权管理
Nest.js JWT 验证授权管理
155 3
Nest.js JWT 验证授权管理
|
6月前
egg.js 24.18参数验证
egg.js 24.18参数验证
77 0
egg.js 24.18参数验证
|
6月前
|
存储 JavaScript 前端开发
账号登录验证(原生js,本地存储)
账号登录验证(原生js,本地存储)
47 0
|
6月前
|
JavaScript 前端开发 UED
JavaScript中的输入验证与处理
JavaScript中的输入验证与处理
|
6月前
|
JavaScript 数据安全/隐私保护
JS正则验证密码
JS正则验证密码
65 0
|
2月前
|
JavaScript 前端开发 API
JavaScript 验证 API
JavaScript 验证 API
28 2
|
3月前
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
108 1
|
3月前
|
前端开发 微服务 API
微服务浪潮下的JSF革新:如何在分散式架构中构建统一而强大的Web界面
【8月更文挑战第31天】随着微服务架构的兴起,企业将应用拆分成小型、独立的服务以提高系统可维护性和可扩展性。本文探讨如何在微服务架构下构建和部署JavaServer Faces (JSF) 应用,通过RESTful服务实现前后端分离,提升灵活性和适应性。
59 0
|
3月前
|
存储 JavaScript 前端开发
js登陆验证
js登陆验证
36 0
|
3月前
|
JavaScript 前端开发
在js中正则表达式验证小时分钟,将输入的字符串转换为对应的小时和分钟
这篇文章介绍了如何在JavaScript中使用正则表达式来验证时间字符串的格式(小时和分钟),并提供了将时间字符串转换为JavaScript Date对象的示例代码及其测试结果。