以下是一个使用Vue.js 2.x实现的简单网页登录示例,包含表单验证和交互反馈

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Vue登录示例</title>
    <!-- 引入Vue.js -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    <style>
        .login-container {
            max-width: 400px;
            margin: 50px auto;
            padding: 20px;
            border: 1px solid #ddd;
            border-radius: 5px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }

        .form-group {
            margin-bottom: 15px;
        }

        label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }

        input {
            width: 100%;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            box-sizing: border-box;
        }

        .error-message {
            color: #ff4444;
            font-size: 0.9em;
            margin-top: 5px;
        }

        button {
            width: 100%;
            padding: 10px;
            background-color: #42b983;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }

        button:hover {
            background-color: #3aa876;
        }
    </style>
</head>
<body>
    <div id="app">
        <div class="login-container">
            <h2>用户登录</h2>
            <form @submit.prevent="handleSubmit">
                <!-- 用户名输入 -->
                <div class="form-group">
                    <label>用户名:</label>
                    <input 
                        type="text" 
                        v-model="username" 
                        placeholder="请输入用户名"
                        @input="clearError"
                    >
                    <div v-if="errors.username" class="error-message">
                        {{ errors.username }}
                    </div>
                </div>

                <!-- 密码输入 -->
                <div class="form-group">
                    <label>密码:</label>
                    <input 
                        type="password" 
                        v-model="password" 
                        placeholder请输入密码"
                        @input="clearError"
                    >
                    <div v-if="errors.password" class="error-message">
                        {{ errors.password }}
                    </div>
                </div>

                <!-- 登录按钮 -->
                <button type="submit" :disabled="loading">
                    {{ loading ? '登录中...' : '立即登录' }}
                </button>

                <!-- 错误提示 -->
                <div v-if="errorMessage" class="error-message" style="margin-top: 15px;">
                    {{ errorMessage }}
                </div>
            </form>
        </div>
    </div>

    <script>
        new Vue({
            el: '#app',
            data() {
                return {
                    username: '',
                    password: '',
                    errors: {
                        username: '',
                        password: ''
                    },
                    errorMessage: '',
                    loading: false
                }
            },
            methods: {
                validateForm() {
                    let isValid = true
                    
                    // 验证用户名
                    if (!this.username.trim()) {
                        this.errors.username = '用户名不能为空'
                        isValid = false
                    }

                    // 验证密码
                    if (!this.password) {
                        this.errors.password = '密码不能为空'
                        isValid = false
                    } else if (this.password.length < 6) {
                        this.errors.password = '密码长度不能少于6位'
                        isValid = false
                    }

                    return isValid
                },

                clearError() {
                    this.errors.username = ''
                    this.errors.password = ''
                    this.errorMessage = ''
                },

                handleSubmit() {
                    if (!this.validateForm()) return

                    this.loading = true
                    this.errorMessage = ''

                    // 模拟API调用
                    setTimeout(() => {
                        // 模拟登录成功
                        if (this.username === 'admin' && this.password === '123456') {
                            alert('登录成功!')
                            // 实际开发中可跳转到主页
                            // this.$router.push('/home')
                        } else {
                            this.errorMessage = '用户名或密码错误'
                        }
                        this.loading = false
                    }, 1500)
                }
            }
        })
    </script>
</body>
</html>

 

功能说明:

  1. 表单验证

    • 用户名不能为空

    • 密码不能为空且长度至少6位

    • 实时错误提示

  2. 交互特性

    • 输入时自动清除旧错误提示

    • 登录按钮禁用状态管理

    • 加载状态提示

  3. 样式特性

    • 响应式布局

    • 友好的错误提示样式

    • 按钮悬停效果

  4. 模拟登录流程

    • 1.5秒模拟API请求

    • 用户名admin密码123456为测试账号

    • 成功提示和失败错误显示

使用说明:

  1. 将代码保存为.html文件

  2. 用浏览器直接打开即可运行

  3. 测试账号:admin / 123456

主要技术点:

  1. Vue基础语法

    • v-model双向数据绑定

    • v-if条件渲染

    • @submit.prevent事件修饰符

  2. 表单验证逻辑

    • 分层验证(空值检查、格式验证)

    • 错误消息管理

  3. 状态管理

    • 加载状态控制

    • 错误状态管理

  4. 样式设计

    • CSS布局技巧

    • 响应式容器设计

    • 错误提示样式

进阶扩展建议:

  1. 添加记住密码功能

  2. 实现验证码功能

  3. 集成真实API调用

  4. 添加路由跳转(需配合Vue Router)

  5. 实现JWT认证存储

  6. 添加第三方登录(微信、GitHub等)

这个示例可以直接在浏览器中运行,无需构建步骤,适合Vue新手学习和快速实现基础登录功能。实际项目中可根据需求添加更多安全措施和功能模块。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值