无法提交用Javascript类验证的HTML表格。

问题描述 投票:0回答:4

我是一个新的编程,尤其是JS,我有一个HTML FORM验证与JS CLASS的问题来了后,填写所有所需的字段正确,但当我点击提交按钮,我得到的错误信息,阻止形式被提交!因为我的代码不工作,因为我的目的是什么,我做了什么错误。

因为我的代码不能正常工作,我到底犯了什么错误?

如何使用JS CLASS来验证和提交表单?(面向对象的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)
                        {
                           alert("Name Required");
                            return false;
                            }
                        }
                    }
                }
                let user = new User();
                user.submitForm();
    </script>
javascript html class variables
4个回答
0
投票

因为在你创建用户对象的时候,名字是空的。

你只是在构造函数中设置了它。你需要在点击提交按钮时得到这个值。

有一种方法是按以下方式改变它。

<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()
            {
                this.userName = document.myForm.name.value;  // <---- Here we reset userName to the input/s current value
                if(this.userName == "" || this.userName == null)
                {
                    alert("Name Required");
                    return false;
                }
            }
        }
    }
    let user = new User();
    user.submitForm();
</script>




我们在提交处理程序中重新设置userName。


0
投票

你在你的构造函数中得到 "name "输入的初始值,用这个代码。

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

这段代码是: userName 属性的初始值,现在它是空的。当你检查你的 onSubmit 职能,该 userName 属性仍然是空的。

你需要做的是在你的 onSubmit 处理器。类似这样。

this.userName = document.myForm.name.value;
if (this.userName == "" || this.userName == null)
{
    alert("Name Required");
    return false;
}

0
投票

这样做是行不通的,因为当输入为空时,你在构造函数中对userName进行了初始化,而当你检查userName的值时,它仍然是空的,你必须在检查前用输入值填充userName。

就像这样。

class User
{
    constructor(userName,submitButton)
    {
        this.userName = document.myForm.name.value;
        this.submitButton = document.getElementById("myForm");
    }

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

            if(this.userName == "" || this.userName == null)
            {
                alert("Name Required");
                return false;
            }
        }
    }
}

let user = new User();
user.submitForm();

我建议你创建一个方法来读取userName属性,因为它是多余的。

© www.soinside.com 2019 - 2024. All rights reserved.