【问题标题】:JavaScript Validation Form Person CompanyJavaScript 验证表 Person 公司
【发布时间】:2022-02-01 15:53:31
【问题描述】:

您好,当我按下验证时,我必须制作一个验证表单,它应该在控制台中显示为真或假。我可以使用 Jquery 2.1。

给你一个带有表单的 HTML 文档,你的任务是用 JavaScript 验证它。

该表格用于输入个人或公司的联系数据。名为“类型”的单选按钮控制此选择。将检查一个这样的按钮(值为“person”或“company”)。

如果“人”选项被选中,您应该验证以下字段(并且仅这些):

first_name 和 last_name 不应为空。例如,“John”和“”(空格)是有效的,但“”不是。 email 应该是非空的,并且根据一个简单的方案进行验证:它应该只包含一个 @ 字符。此外,两个部分(@ 之前和之后)都应由至少一个且最多 64 个字符组成,仅包含字母、数字和/或点(a-z、A-Z、0-9、.)。例如,“john@example.com”和“.@”。是有效的,但“@example.com”不是。 如果选中“公司”选项,您应该验证以下字段(并且仅这些字段):

company_name 不能为空; phone 应该是非空的,并且只包含数字、破折号 (-) 和空格。它应该至少有六位数字。例如,“234-567-890”有效,但“12-3”无效。 写一个函数

function solution();

给定一个表示 HTML 文档的 DOM 树,返回一个布尔值,指示该文档中的表单是否有效。

这是我的代码

function solution() {     
    var person = $("#type_person").is(":checked");
    var company = $("#type_company").is(":checked");
    var fName = $("#first_name").val();
    var lName = $("#last_name").val();
    var email = $("#email").val();
    var companyName = $("#company_name").val();
    var phone = $("#phone").val();
    var result = true;
    
    $("input").removeClass("validateFail");

    if (person) {       
      if (fName.match(/[a-zA-Z ]+/) == null){
        $("#first_name").addClass("validateFail");
        result = false;
      }
      
      if(lName.match(/[a-zA-Z ]+/) == null){
        $("#last_name").addClass("validateFail");
        result = false;
      }
      
      if(email.match(/^[a-zAZ.]{1,64}@[a-zA-Z.]{1,64}$/) == null ){
        $("#email").addClass("validateFail");
          result = false;
      }
          
    } else if (company) {
      if(companyName.match(/(.)+/) == null){
        $("#company_name").addClass("validateFail");
        result = false; 
      }
      
      if(phone.match(/^[\d]{3}-[\d]{3}-[\d]{4}$/) == null){
        $("#phone").addClass("validateFail");
        result = false;
      }
      
    } else {
       return false; // Possible when a DOM Element isn't found
    } 
  return result;
}
$("#validateMe").on("click", function(){
  if(solution() == true){
    console.log("EVERYTHING OK!");
  } else {
    console.log("Validation FAILED!");
  }
  
}); 

和html

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="js.js"></script>
<style>
input {
  float: left;
}

input[type=text],
input[type=button] {
  clear: left;
}

</style>
</head>
<body>
<form>
    PERSON: <input type="radio" id="type_person" name="type" value="person" /> <br> 
    COMPANY:<input type="radio" id="type_company" name="type" value="company" checked/> <br> 
    <input type="text" id="first_name" name="first_name" value="John" />
    <input type="text" id="last_name" name="last_name" value="Doe" />
    <input type="text" id="email" name="email" value="john@example.com" />
    <input type="text" id="company_name" name="company_name" value="ACME" />
    <input type="text" id="phone" name="phone" value="12-3" />
    <input type="button" value="Validate" id="validateMe" />
    </form>
    </body>

我应该在那里改变什么才能工作?它实际上在控制台中没有做任何事情。

【问题讨论】:

    标签: javascript html jquery


    【解决方案1】:

    从头上拿这两行代码

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src="js.js"></script>
    

    并在像这样关闭表单后将它们放在正文中

    <body>
        <form>
            PERSON: <input type="radio" id="type_person" name="type" value="person" /> <br> 
            COMPANY:<input type="radio" id="type_company" name="type" value="company" checked/> <br> 
            <input type="text" id="first_name" name="first_name" value="John" />
            <input type="text" id="last_name" name="last_name" value="Doe" />
            <input type="text" id="email" name="email" value="john@example.com" />
            <input type="text" id="company_name" name="company_name" value="ACME" />
            <input type="text" id="phone" name="phone" value="12-3" />
            <input type="button" value="Validate" id="validateMe" />
        </form>
    
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
        <script src="js.js"></script>
    </body>
    

    【讨论】:

    • 嗨,我不明白这如何解决他们的问题?
    • @hatef 问题是他在控制台中看不到任何东西。发生这种情况是因为他试图以编程方式访问浏览器尚未意识到的页面元素。这就是为什么最好将脚本放在页面底部的原因。
    • 这是有道理的。我错过了他问题的最后一行:facepalm
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多