first commit
This commit is contained in:
96
html/otp.html
Normal file
96
html/otp.html
Normal file
@@ -0,0 +1,96 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="vi">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Xác thực OTP - EuroTile Worker</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="assets/css/style.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-wrapper">
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<a href="login.html" class="back-button">
|
||||
<i class="fas fa-arrow-left"></i>
|
||||
</a>
|
||||
<h1 class="header-title">Xác thực OTP</h1>
|
||||
<div style="width: 32px;"></div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<!-- Icon -->
|
||||
<div class="text-center mt-4 mb-4">
|
||||
<div style="display: inline-block; width: 80px; height: 80px; background: linear-gradient(135deg, #005B9A 0%, #38B6FF 100%); border-radius: 50%; display: flex; align-items: center; justify-content: center;">
|
||||
<i class="fas fa-shield-alt" style="font-size: 36px; color: white;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Instructions -->
|
||||
<div class="text-center mb-4">
|
||||
<h2>Nhập mã xác thực</h2>
|
||||
<p class="text-muted">Mã OTP đã được gửi đến số điện thoại</p>
|
||||
<p class="text-bold text-primary" style="font-size: 16px;">0983 441 099</p>
|
||||
</div>
|
||||
|
||||
<!-- OTP Input -->
|
||||
<form action="index.html" class="card">
|
||||
<div class="otp-container">
|
||||
<input type="text" maxlength="1" class="otp-input" autofocus>
|
||||
<input type="text" maxlength="1" class="otp-input">
|
||||
<input type="text" maxlength="1" class="otp-input">
|
||||
<input type="text" maxlength="1" class="otp-input">
|
||||
<input type="text" maxlength="1" class="otp-input">
|
||||
<input type="text" maxlength="1" class="otp-input">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary btn-block mt-3">
|
||||
Xác nhận
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<!-- Resend OTP -->
|
||||
<div class="text-center mt-3">
|
||||
<p class="text-small text-muted">
|
||||
Không nhận được mã?
|
||||
<a href="#" class="text-primary" style="text-decoration: none; font-weight: 500;">
|
||||
Gửi lại (60s)
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Alternative Methods -->
|
||||
<div class="card mt-4">
|
||||
<h3 class="text-center mb-3">Phương thức xác thực khác</h3>
|
||||
<div class="grid grid-2">
|
||||
<button class="btn btn-secondary btn-sm">
|
||||
<i class="fas fa-comment-dots"></i> SMS
|
||||
</button>
|
||||
<button class="btn btn-secondary btn-sm">
|
||||
<i class="fas fa-phone"></i> Gọi điện
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Auto focus next input
|
||||
const inputs = document.querySelectorAll('.otp-input');
|
||||
inputs.forEach((input, index) => {
|
||||
input.addEventListener('input', (e) => {
|
||||
if (e.target.value && index < inputs.length - 1) {
|
||||
inputs[index + 1].focus();
|
||||
}
|
||||
});
|
||||
|
||||
input.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Backspace' && !e.target.value && index > 0) {
|
||||
inputs[index - 1].focus();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user