使用html引入在线vue,生成vue登陆表单要求带正则验证和验证码(验证码随机数生成)
时间: 2023-05-28 15:01:14 浏览: 167
<!DOCTYPE html>
<html>
<head>
<title>Vue Login Form with Regex Validation and Captcha</title>
<!-- Vue.js framework -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- Bootstrap CSS framework -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- Captcha CSS -->
<style type="text/css">
#captcha {
font-size: 24px;
font-weight: bold;
color: #337ab7;
cursor: pointer;
}
</style>
</head>
<body>
<div id="app" class="container">
<h1>Vue Login Form with Regex Validation and Captcha</h1>
<!-- Login form -->
<form class="form-horizontal" @submit.prevent="submitForm">
<div class="form-group" :class="{'has-error':!usernameValid}">
<label for="username" class="col-sm-2 control-label">Username</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="username" placeholder="Username" v-model.trim="username" @blur="checkUsername" required>
<span class="help-block" v-if="!usernameValid">Username must contain only letters, numbers and underscores.</span>
</div>
</div>
<div class="form-group" :class="{'has-error':!passwordValid}">
<label for="password" class="col-sm-2 control-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="password" placeholder="Password" v-model.trim="password" @blur="checkPassword" required>
<span class="help-block" v-if="!passwordValid">Password must be at least 8 characters long and contain at least one lowercase letter, one uppercase letter, one number and one special character.</span>
</div>
</div>
<div class="form-group" :class="{'has-error':captchaError}">
<label class="col-sm-2 control-label">Captcha</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="Enter Captcha" v-model.trim="captcha" required>
<span class="help-block" v-if="captchaError">Invalid Captcha. Please try again.</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary" :disabled="submitDisabled">Submit</button>
</div>
</div>
</form>
<!-- Captcha -->
<div id="captcha" @click="generateCaptcha">{{captcha}}</div>
</div>
<!-- Vue.js script -->
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
username: '',
password: '',
captcha: '',
captchaError: false,
usernameValid: true,
passwordValid: true
},
methods: {
// Submit login form
submitForm() {
if (this.captcha === this.generatedCaptcha) {
// Do login action here
alert('Login successful!');
} else {
this.captchaError = true;
}
},
// Check if username is valid
checkUsername() {
var regex = /^[a-zA-Z0-9_]+$/;
this.usernameValid = regex.test(this.username);
},
// Check if password is valid
checkPassword() {
var regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
this.passwordValid = regex.test(this.password);
},
// Generate captcha
generateCaptcha() {
var length = 6;
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
this.generatedCaptcha = result;
this.captcha = '';
this.captchaError = false;
}
},
computed: {
// Check if submit button is disabled
submitDisabled() {
return !this.usernameValid || !this.passwordValid || !this.captcha;
}
},
watch: {
// On change of captcha, set captcha error to false
captcha() {
this.captchaError = false;
}
},
mounted() {
// Generate captcha on page load
this.generateCaptcha();
}
})
</script>
</body>
</html>
阅读全文
相关推荐











