我对 HTML 中的 JS 和 DIV 有点问题

扎卡里亚·拜比

所以这就是事情,我正在学习 JS,我开始做一些简单的练习来熟悉它,所以我尝试做一个简单的表单验证,但我遇到了显示错误的 div 问题,因为它们是被覆盖,我想得到一些建议来改进此代码并在可能的情况下使其更好。谢谢 !

function checkdata() {
    //Acess TextBox Content
    var name1 = document.getElementById("name1").value;
    var name2 = document.getElementById("name2").value;
    var email = document.getElementById("email").value;

    //Acess Radio Content
    var tdi = document.getElementById("tdi");
    var tri = document.getElementById("tri");
    var tsi = document.getElementById("tsi");

    //Acess Checkbox
    var ch = document.getElementById("terms").checked;

    //Functions
    if (name1 == "" || name2 == "" || email == "") {
      document.getElementById("errorsdiv").innerHTML = "Those Fields Are Required";

    }
    if ((tdi.checked == false) || (tri.checked == false) || (tsi.checked == false)) {
      document.getElementById("errorsdiv").innerHTML = "You need to check one branch";
    }
    if (ch.checked == false) {
      document.getElementById("errorsdiv").innerHTML = "You need to Agree on our terms";
    }
  }
<h1>Form Validation</h1>
<form>
  <fieldset>
    <legend>Informations</legend>
    <label for="name1">Enter Your First Name</label>
    <input type="text" id="name1"><br>
    <label for="name2">Enter Your Last Name</label>
    <input type="text" id="name2"><br>
    <label for="email">Enter Your email</label>
    <input type="text" id="email"><br>
    <label>Choose Your Branch : </label>
    <label for="tdi">TDI</label>
    <input type="radio" name="branch" id="tdi">
    <label for="tri">TRI</label>
    <input type="radio" name="branch" id="tri">
    <label for="tsi">TSI</label>
    <input type="radio" name="branch" id="tsi"><br>
    <input type="checkbox" name="terms" id="terms">
    <label for="terms">Agree On Our Terms</label>
  </fieldset><br>
  <input type="button" value="Submit" class="button" onclick="checkdata();">
  <fieldset class="errorsf">
    <legend>Errors</legend>
    <div class="errorsdiv" id="errorsdiv">

    </div>
  </fieldset>
</form>

罗伯·摩尔

这应该可以让您解决错误消息被覆盖的问题。我改变了每一次出现

document.getElementById("errorsdiv").innerHTML =

document.getElementById("errorsdiv").innerHTML += 

这可以防止errorsdiv在循环的每次迭代期间被覆盖forEach

errorsdiv每当您的函数被调用时,我也会设置为空状态,以防止在提交尝试后 innerHTML 不断增长。

我还更改了此语句中的逻辑:

if ((tdi.checked == false) || (tri.checked == false) || (tsi.checked == false)) {

if ((tdi.checked == false) && (tri.checked == false) && (tsi.checked == false)) {

那些需要是AND运算符而不是OR运算符。您拥有它的方式永远不会返回 true,因为在任何时候都只能检查 1 个单选按钮。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Form</title>
  <link rel="stylesheet" href="style.css">
  <script>
    function checkdata() {
      document.getElementById("errorsdiv").innerHTML = "";
      //Acess TextBox Content
      var name1 = document.getElementById("name1").value;
      var name2 = document.getElementById("name2").value;
      var email = document.getElementById("email").value;

      //Acess Radio Content
      var tdi = document.getElementById("tdi");
      var tri = document.getElementById("tri");
      var tsi = document.getElementById("tsi");

      //Acess Checkbox
      var ch = document.getElementById("terms");

      //Functions
      if (name1 == "" || name2 == "" || email == "") {
        document.getElementById("errorsdiv").innerHTML += "<p>First Name, Last Name, and email are Required</p>";

      }
      if ((tdi.checked == false) && (tri.checked == false) && (tsi.checked == false)) {
        document.getElementById("errorsdiv").innerHTML += "<p>You need to check one branch</p> ";
      }
      if (!ch.checked) {
        document.getElementById("errorsdiv").innerHTML += "<p>You need to Agree to our terms</p>";
      }
    }
  </script>
</head>

<body>
  <h1>Form Validation</h1>
  <form>
    <fieldset>
      <legend>Informations</legend>
      <label for="name1">Enter Your First Name</label>
      <input type="text" id="name1"><br>
      <label for="name2">Enter Your Last Name</label>
      <input type="text" id="name2"><br>
      <label for="email">Enter Your email</label>
      <input type="text" id="email"><br>
      <label>Choose Your Branch : </label>
      <label for="tdi">TDI</label>
      <input type="radio" name="branch" id="tdi">
      <label for="tri">TRI</label>
      <input type="radio" name="branch" id="tri">
      <label for="tsi">TSI</label>
      <input type="radio" name="branch" id="tsi"><br>
      <input type="checkbox" name="terms" id="terms">
      <label for="terms">Agree On Our Terms</label>
    </fieldset><br>
    <input type="button" value="Submit" class="button" onclick="checkdata();">
    <fieldset class="errorsf">
      <legend>Errors</legend>
      <div class="errorsdiv" id="errorsdiv">

      </div>
    </fieldset>
  </form>
</body>

</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

HTML 页面中的 Node.js 和现有 Div

我有 2 个 div 元素的 html/js 任务问题

我们可以在Flutter中裁剪具有点和大小的图像吗?

在Node.js中与q和Promise有点混淆

HTML 为什么我的边框中的 span 和 div 有区别?

元组对我来说有点问题

我的CPU有点问题

我对 php 中的以下代码有点困惑

如果我使用jQuery更改div的HTML,是否从内存中删除了所有DOM元素和侦听器?

我只想从HTML / JS页面打印特定的div内容和电子邮件结果?

我的微调器动作有点问题

根据获胜或失败条件在div中显示照片具有其自己的照片阵列。同时使用JS和HTML

隐藏和显示div取决于JS中html标记的类和ID(递增)

我的代码中的js日期的月和日问题

在cordova中安装插件从我的项目中删除了所有文件(index.js和index.html除外)

我如何在React JS中返回自定义HTML div?

我的html代码中的按钮有问题

根據if和else條件在HTML特定的div文件中調用JS變量

我如何能够在vue js html中以给定格式多次选择和传递数据?

我在此HTML代码中在PHP和JS之间链接变量时遇到错误

检查时,我的IDE中的HTML和chrome开发工具中的HTML有何不同

我的朋友和我在js和html中有问题,我们无法通过按钮制作3D模型

JS:计算具有点和逗号的值(即 1.000,00)

我想从列表中删除所有点,但我的程序给了我错误。我该如何解决

在另一个带有点参数和默认值的函数中调用带有点参数和默认值的函数

如何遍历目录中名称中带有点和空格的目录?

为什么v-card中<div>的内容与card有点不同?

如何为我的 pin 连接我的 HTML 和 JS 文件?

使用包含库中定义的JS函数,不会触发我的成功和错误回调。我的JS或他们的JS有问题吗?