为什么提交表单时只执行一部分代码



我制作了一个表单,在提交时会触发函数"CCD_ 1";来自外部CCD_ 2文件。这是html:

<div class="loginContainer">
<div id="login "class="login">
<img src="picture.tiff" class="loginImage">
<div class="loginHeading">
Login
</div>
<form id="form" onsubmit="validateForm()">
<input type="text" class="loginTextbox" name="name" placeholder="Username"></input>
<input type="password" class="loginTextbox" name="password"  placeholder="Password"></input>
<div id="loginButtonContainer">
<input type="reset" class="loginButton" value="Reset">
<input type="submit" class="loginButton recommended" value="Login">
</div>
</form>
</div>
<script src="validator.js">
</script>

在点击提交时,它触发功能"提交";CCD_ 3";函数,该函数检查用户名是否为";用户名";并且密码是"0";密码";。(这只是我正在做的一个实验,所以不需要太多的安全性;被禁用";以及";无效";类添加到窗体中,然后删除它们。(它的功能类似于启动时的macOS密码屏幕。(

只是出于某种原因,它只执行部分代码:

function validateForm() {
var form = document.getElementById("login");
var name = document.forms["form"]["name"].value;
var password = document.forms["form"]["password"].value;

if (name == "username" && password == "password") {
alert("Password is correct.");
} else {
alert("Password is incorrect.");

// this part doesn't execute.
form.classList.add("disabled");
setTimeout(function(){
form.classList.add("invalid");
}, 2000);
setTimeout(function(){
form.classList.remove("invalid");
form.classList.remove("disabled");
}, 600);
}
}

form.classList.add("disabled");中的代码部分不执行。有人能帮我吗?

编辑:我尝试了<div id="login" class="login">而不是<div id="login "class="login">,它不起作用。

编辑2:这是CSS:

body {
background-image: url("background.jpg");
font-family: system-ui;
background-size: cover;
background-position: center;
}

.loginContainer {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(10, 10, 10, 0.5);
z-index: 1;
}
.login {
height: 360px;
width: 300px;
background-color: #fbfbfb;
border: 2px;
border-radius: 16px;
text-align: center;
position: absolute;
top: 50%;
left: 50%;
z-index: 0;
-webkit-transform: translate(-50%, -50%);
}
.loginimage {
width: 100px;
height: 100px;
padding-top: 25px;
}
.loginHeading {
font-size: 30px;
font-weight: bold;
height: 50px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.loginTextbox {
height: 50px;
width: 270px;
margin: 4px;
background-color: #fff;
border: 2px;
border-radius: 16px;
font-size: 20px
padding-right: 1rem;
padding-left: 1rem;
}
.invalid {
animation: shake .5s linear;
}
.loginTextbox:focus, textarea:focus {
box-shadow: 0 0 5px #0084FF;
border: 1px solid #006AFF;
}
.disabled {
background-image: -webkit-linear-gradient(#cccccc, #bbbbbb);
color: gray;
}
.loginbuttonContainer{
height: 83px;
width: 300px;
}
.loginbutton {
height: 50px;
width: 130px;
margin: 4px;
background-color: #f5f5f5;
border: 2px;
border-radius: 16px;
font-size: 20px
}
.loginbutton:hover {
background-color: #f0f0f0;
}
.loginbutton:active {
background-image: -webkit-linear-gradient(#0084FF, #006AFF);
color: white;
}
.destructive {
color: red;
}
.recommended {
background-image: -webkit-linear-gradient(#0095FF, #007BFF);
color: white;
}
@keyframes shake {
8%, 41% {
-webkit-transform: translateX(-10px);
-webkit-transform: translate(-50%, -50%);
}
25%, 58% {
-webkit-transform: translateX(10px);
-webkit-transform: translate(-50%, -50%);
}
75% {
-webkit-transform: translateX(-5px);
-webkit-transform: translate(-50%, -50%);
}
92% {
-webkit-transform: translateX(5px);
-webkit-transform: translate(-50%, -50%);
}
0%, 100% {
-webkit-transform: translateX(0);
-webkit-transform: translate(-50%, -50%);
}
}
@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) {
.login {
-webkit-backdrop-filter: blur(5px);
backdrop-filter: blur(5px);
background-color: rgba(255, 255, 255, 0.5);
}
}

我相信这就是的问题所在

<div id="login "class="login">

还有另外的"在id="之后;登录";

你称之为

var form = document.getElementById("login");

只需更改

<div id="login "class="login">

<div id="login"class="login">

编辑V2

更改以下

setTimeout(function(){
form.classList.remove("invalid");
form.classList.remove("disabled");
}, 9000); //Changes the delay of removing the effects

@keyframes shake {
8%, 41% {
transform: translateX(-10px);
transform: translate(-50%, -50%);
}
25%, 58% {
transform: translateX(10px);
transform: translate(-50%, -50%);
}
75% {
transform: translateX(-5px);
transform: translate(-50%, -50%);
}
92% {
transform: translateX(5px);
transform: translate(-50%, -50%);
}
0%, 100% {
transform: translateX(0);
transform: translate(-50%, -50%);
}
}

从0.5秒变为2或3秒左右,因为太快

.invalid {
animation: shake 5s linear;
}

也更改了这里的颜色代码

.disabled {
background-image: linear-gradient(red, blue);
color: gray;
}

最新更新