1 2<!DOCTYPE html> 3<html lang="en"> 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Login - Tournament Organizer</title> 8 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> 9</head> 10<body> 11 <div class="container mt-5"> 12 <div class="row justify-content-center"> 13 <div class="col-md-6"> 14 <div class="card"> 15 <div class="card-header"> 16 <h3 class="text-center">Tournament Organizer Login</h3> 17 </div> 18 <div class="card-body"> 19 20 <form method="POST" action="" id="loginForm"> 21 <div class="mb-3"> 22 <label for="email" class="form-label">Email</label> 23 <input type="email" class="form-control" id="email" name="email" value=""> 24 </div> 25 26 <div class="mb-3"> 27 <label for="password" class="form-label">Password</label> 28 <input type="password" class="form-control" id="password" name="password"> 29 </div> 30 31 <div class="d-grid"> 32 <button type="submit" class="btn btn-primary">Login</button> 33 </div> 34 </form> 35 36 <div class="text-center mt-3"> 37 <p>Don't have an account? <a href="register.php">Register here</a></p> 38 <p><a href="forgot_password.php">Forgot your password?</a></p> 39 </div> 40 </div> 41 </div> 42 </div> 43 </div> 44 </div> 45 46
46<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
46 47
47<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
47 48
48<script> 49 $(document).ready(function() { 50 $('#loginForm').on('submit', function(e) { 51 let isValid = true; 52 const email = $('#email').val().trim(); 53 const password = $('#password').val(); 54 55 // Clear previous error styling 56 $('.form-control').removeClass('is-invalid'); 57 $('.invalid-feedback').remove(); 58 59 // Validate email 60 if (email === '') { 61 $('#email').addClass('is-invalid'); 62 $('#email').after('<div class="invalid-feedback">Email is required</div>'); 63 isValid = false; 64 } 65 66 // Validate password 67 if (password === '') { 68 $('#password').addClass('is-invalid'); 69 $('#password').after('<div class="invalid-feedback">Password is required</div>'); 70 isValid = false; 71 } 72 73 if (!isValid) { 74 e.preventDefault(); 75 } 76 }); 77 }); 78 </script>
78 79</body> 80</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.