Javascript验证允许提交,即使有错误



我有一个HTML表单,其中包含各种字段的Javascript验证。但是,每当我提交表单时,即使表单字段正确(即不为空或为空(,我添加的错误消息也会出现。

我希望错误消息仅在表单字段为空或为空时才出现。

<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=0.1,shrink-to-fit=no">
<link type="text/css" href="/css" rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<title>Javascript Form Validation</title>
<style>
</style>
</head>
<body>
<div class="container">
<div class="row justify-content-center">
<div class="col-sm-6 col-md-6 col-lg-6">
<div class="card">
<div class="card-body">
<form method="post" name="myForm" id="myForm">
<div class="form-group">
<label for="exampleInputName1">Full name</label>
<input type="text" class="form-control" name="name" id="exampleInputName1" aria-describedby="nameHelp" placeholder="Enter name">
</div> 
<button type="submit" name="login" class="btn btn-primary">Submit</button>
</form>
<script>
class User
{
constructor(userName,submitButton)
{
this.userName = document.myForm.name.value;
this.submitButton = document.getElementById("myForm");
}
submitForm()
{
this.submitButton.onsubmit = function()
{
if(this.userName == "" || this.userName == null)
{
document.write("Name Required");
return false;
}
}
}
}
let user = new User();
user.submitForm();
</script>

类构造函数中的这一行

this.userName = document.myForm.name.value;

this.userName 的值将在您键入用户名后立即过时,因此它始终为空。

您应该将该行从构造函数中移出并放置它,如下所示:

this.submitButton.onsubmit = function()
{
this.userName = document.myForm.name.value;

理想情况下,您可以这样做:

class User
{
constructor(userName,submitButton)
{
this.userName = document.myForm.name;  /* remove .value here */
this.submitButton = document.getElementById("myForm");
}
submitForm()
{
this.submitButton.onsubmit = function()
{
if(this.userName.value == "" || this.userName.value == null) /* add .value here */
{
document.write("Name Required");
return false;
}
}
}
}

我在 2 行上添加了已更改的评论。

最新更新