フォームを正常に送信できるように、ユーザ名とパスワードをそれぞれadmin
& admin
にします。しかし、ユーザー名とパスワードが一致しない場合でもフォームは送信されますadmin
& admin
。検証に失敗してもフォームが送信されます
function validateOnSubmit() {
console.log("Called!");
var isValid = true;
document.getElementById("alert").className = "";
if (document.getElementById("login-password").value.length <= 4) {
isValid = false;
document.getElementById("alert").className = "doWiggle";
setTimeout(function(){
document.getElementById("alert").className = document.getElementById("alert").className.replace('doWiggle', '');
}, 300);
}else
{
if(document.getElementById("login-password").value != "admin" && document.getElementById("username").value != "admin") {
alert("Wrong Password!");
isValid = false;
}
}
console.log(isValid);
return isValid;
}
HTML
<div class="container">
<form action="home.html" id="login-form" method="post" onsubmit="return validateOnSubmit()">
<p class="form-header">Sign In</p>
<span>Username</span>
<br/>
<input type="text" name="username" id="username" autocomplete="off" required/>
<br/>
<br/>
<span>Password</span>
<br/>
<input type="password" name="login-password" id="login-password" onkeyup="return validate()" required/>
<p id="alert">Password should more than 4 characters!</p>
<br/>
<br/>
<input type="checkbox" name="rememberMe" class="rememberMe" id="rememberMe"/>
<label for="rememberMe">Remember Me</label>
<br/>
<br/>
<input type="submit" id="submit" value="Sign In"/>
<br>
<br>
<div id="options">
<a href="register.html">Not registered ?</a>
</div>
<input type="hidden" name="operation" value="login">
</form>
</div>
<script type="text/javascript" src="js/validate.js"></script>
</body>
ここで、あなたは 'validateOnSubmit'を呼び出しますか? – Rayon
はあなたのHTMLコードを共有します –
イベントハンドラであなたの関数を呼び出すならば、フォームの送信を止めるために 'e.preventDefault()'を追加する必要があります。 –