一、页面展示与交互功能
表单提交与验证(含密码强度验证)
实现带密码强度验证的表单提交功能,使用正则表达式检查密码复杂度:
<form bindsubmit="submitForm"> <input name="username" placeholder="请输入用户名" /> <input name="password" placeholder="请输入密码" type="password" bindinput="checkPasswordStrength" /> <!-- 密码强度提示 --> <view class="password-strength"> 密码强度:{{passwordStrength}} </view> <button form-type="submit">提交</button> </form>
Page({ data: { passwordStrength: '未输入' }, // 实时检查密码强度 checkPasswordStrength(e) { const password = e.detail.value; let strength = '弱'; // 默认弱 // 密码强度正则规则: // 1. 长度至少8位 // 2. 包含数字 // 3. 包含小写字母 // 4. 包含大写字母 // 5. 包含特殊字符(!@#$%^&*) const lengthRule = /.{8,}/; const hasNumber = /\d/; const hasLowercase = /[a-z]/; const hasUppercase = /[A-Z]/; const hasSpecial = /[!@#$%^&*]/; // 验证规则并计算强度等级 let score = 0; if (lengthRule.test(password)) score++; if (hasNumber.test(password)) score++; if (hasLowercase.test(password)) score++; if (hasUppercase.test(password)) score++; if (hasSpecial.test(password)) score++; // 根据得分设置强度描述 if (password.length === 0) { strength = '未输入'; } else if (score < 2) { strength = '弱(至少8位,包含数字和字母)'; } else if (score < 4) { strength = '中(建议增加大小写字母组合)'; } else { strength = '强'; } this.setData({ passwordStrength: strength }); }, submitForm(e) { const formData = e.detail.value; // 用户名验证 if (!formData.username) { wx.showToast({ title: '用户名不能为空', icon: 'none' }); return; } // 密码验证 if (!formData.password) { wx.showToast({ title: '密码不能为空', icon: 'none' }); return; } // 密码强度最终验证 const strongPasswordRule = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{8,}$/; if (!strongPasswordRule.test(formData.password)) { wx.showToast({ title: '密码需8位以上,包含数字、大小写字母和特殊字符', icon: 'none' duration: 3000 }); return; } // 验证通过,提交表单 wx.request({ url: 'https://api.example.com/register', method: 'POST', data: formData, success: (res) => { if (res.data.success) { wx.showToast({ title: '注册成功' }); } else { wx.showToast({ title: '注册失败', icon: 'none' }); } } }); } })
密码强度验证规则说明:
基础要求:至少8位长度
中级要求:包含数字、小写字母、大写字母中的至少两种
高级要求:同时包含数字、小写字母、大写字母和特殊字符(!@#$%^&*)
实时反馈:随着用户输入实时更新密码强度提示
提交验证:最终提交时强制检查是否符合高级要求