主頁 > 軟體工程 > JavaScript,無法洗掉css類

JavaScript,無法洗掉css類

2022-01-28 22:35:42 軟體工程

我在 js 中對 html 表單進行了驗證,它包含兩個操作第一個是在單擊“發送”按鈕后檢查輸入中的資料并顯示表單下方陣列中的錯誤 - 這里一切正常。

驗證的第二部分是在資料輸入期間檢查欄位。當資料與鍵(正則運算式)或條件不匹配時,會出現紅色輪廓圓形欄位。

在這里,我遇到了一個問題,它僅適用于我的五個欄位中的三個,名稱(Imie i Naziwsko),電子郵件(Adres mailowy)和電話(Telefon)。

對于標題(Tytul)和訊息(wiadomosc),當資料錯誤時它會顯示紅色輪廓,但當資料正確時它不會被洗掉。

我在控制臺沒有任何錯誤。

提琴手

const formChecker = () => {
  //get elements
  const contactForm = document.getElementById("form-contact");
  const inputName = document.getElementById("name");
  const inputEmail = document.getElementById("mailadress");
  const inputTitle = document.getElementById("title");
  const inputMessage = document.getElementById("message");
  const inputPhone = document.getElementById("phone-number");
  const divError = document.querySelector(".error-message");

  //regex patterns
  const regexPatternMail =
    /^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff] |\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff] |\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff] |\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff] |\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*(\.\w{2,}) $/;

  const regexPattern =
    /^([A-Z???????ó?][a-z???ńó????{3,}] )(\s|-|_) ([A-Z???????ó?][a-z???ńó????{3,}] )$/;
  const regexPhonePattern =
    /^[ ]?\d{1,3}\s?(-)?[0-9]{3}(\s)?[0-9]{3,4}(\s)?[0-9]{3}(\s)?$/;

  const regexTitltePattern = / (\w{3,30}) /;

  //remove html validation
  contactForm.setAttribute("novalidate", true);

  //test functions
  function testText(field) {
    return regexPattern.test(field.value);
  }

  function testMail(field) {
    return regexPatternMail.test(field.value);
  }

  function testPhone(field) {
    return regexPhonePattern.test(field.value);
  }

  function testTitle(field, lng) {
    return regexTitltePattern.test(field.value);
  }

  function testMessage(field, lng) {
    return field.value.length < lng;
  }

  //add and remove red stroke
  function markFieldAsError(field, show) {
    if (show) {
      field.classList.add("invalid");
    } else {
      field.classList.remove("invalid");
    }
  }

  //add listener
  inputName.addEventListener("input", (e) =>
    markFieldAsError(e.target, !testText(e.target))
  );
  inputEmail.addEventListener("input", (e) =>
    markFieldAsError(e.target, !testMail(e.target))
  );
  inputPhone.addEventListener("input", (e) =>
    markFieldAsError(e.target, !testPhone(e.target))
  );
  inputTitle.addEventListener("input", (e) =>
    markFieldAsError(e.target, !testTitle(e.target))
  );
  inputMessage.addEventListener("input", (e) =>
    markFieldAsError(e.target, !testMessage(e.target))
  );

  //send
  contactForm.addEventListener("submit", (el) => {
    el.preventDefault();
    let formErrors = [];

    //hide error - red stroke
    for (const el of [
      inputName,
      inputEmail,
      inputPhone,
      inputTitle,
      inputMessage,
    ]) {
      el.markFieldAsError(el, false);
    }

    if (!testText(inputName)) {
      formErrors.push("Prosz? poprawnie wyp?eni?  pole Imi? i Nazwisko ");
      markFieldAsError(inputName, true);
    }

    if (!testMail(inputEmail)) {
      formErrors.push("Prosz? poprawnie wype?ni? pole z adresem email");
      markFieldAsError(inputEmail, true);
    }

    if (!testPhone(inputPhone)) {
      markFieldAsError(inputPhone, true);
    }

    if (!testTitle(inputTitle)) {
      formErrors.push("Pole wiadomo?? musi zawiera? minimum 3 znaki");
      markFieldAsError(inputTitle, true);
    }

    if ((!testMessage(inputMessage), 10)) {
      formErrors.push("Pole wiadomo?? musi zawiera? minimum 10 znaków");
      markFieldAsError(inputMessage, true);
    }

    if (!formErrors.length) {
      //if no errors send form
      el.target.submit();
    } else {
      //if there are some errors

      divError.innerHTML = `<h3 >Przed wys?aniem prosz? poprawi? b??dy:</h3>
                    <ul >
                        ${formErrors.map((el) => `<li>${el}</li>`).join("")} 
                    </ul>`;
    }
  });
};

formChecker();
body {
  background-color:#412f28;
  display:flex;
  align-items:center;
  flex-direction:column;
}
#form p {
  font-size: 1rem;
  color:white!important;
}
#form .star {
  font-size: 1rem;
  vertical-align: super;
  color:#E3A324!important;
}
/* Style inputs with type="text", select elements and textareas */
input[type=text], input[type=mail],
select, textarea {
  width: 100%; /* Full width */
  padding: 24px; /* Some padding */ 
  border: 1px solid #35251f; /* Gray border */
  border-radius: 4px; /* Rounded borders */
  box-sizing: border-box; /* Make sure that padding and width stays in place */
  margin-top: 6px; /* Add a top margin */
  margin-bottom: 16px; /* Bottom margin */
  resize: vertical /* Allow the user to vertically resize the textarea (not horizontally) */
}
/*
.invalid {
border: 4px solid red;
outline: 4px;
box-shadow: 0 0 2px red;
}
*/
.invalid {
  border:0px!important ;
  transition: border .3s linear;
  outline: dashed 1px red!important;
  outline-width:1px;
  outline-offset: 4px;
  transition: border, outline .3 ease-out;
}
/* Style the submit button with a specific background color etc */
input[type=submit], .custom-file-upload  {
  background-color:#E3A324;
  color: white;
  font-weight: 700;
  padding: 12px 30px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  margin-left: 5px;
  margin-right: 5px;
  transition: background-color 1s linear;
}
input[type="text"], input[type="mail"], textarea {
  border:2px solid #cc9933;
  outline:0;
  transition: border .3s linear;
  outline: 0px;
}
input[type="text"]:hover , input[type="mail"]:hover  {
  border: 2px solid #ffaa00;
}
input[type="file"] {
  display:none;
}
/* When moving the mouse over the submit button, add a darker green color */
input[type=submit]:hover {
  background-color: #ffaa00;
}
label {
  color:white;
}
/* Add a background color and some padding around the form */
.container-form {
  width:60vw;
  display:flex;
  justify-content: center;
  align-items: center;
}
input {
  transition: outline-color .7s linear;
}
input:focus, textarea:focus, select:focus{
  outline-color: #E3A324;
}
.error-message  {
  font-size: .5rem;
  line-height:20px;
  padding-left:1vw;
  margin-top:-1vh;
  color:#E3A324;
  font-weight: 400;
  letter-spacing: 1px;
}
<body>
   <h2>Napisz do nas:</h2>
   <p><span class="star">*</span>pola oznaczone gwiazdk? s? wymagane aby wys?a? wiadomo??</p>
   <div class="container-form">
      <form  id ="form-contact" action="action_page.php">
         <label for="fname">Imi? i Nazwisko <span class="star">*</span></label>
         <input type="text" id="name" name="name" placeholder="Podaj imi? i nazwisko..." required>
         <label for="mailadress">Adres mailowy<span class="star">*</span></label>
         <input type="mail" id="mailadress" name="mail" placeholder="podaj swojego maila..." required>
         <label for="mailadress">Telefon</label>
         <input type="text" id="phone-number" name="phone" placeholder="podaj nr telefonu...">
         <label for="title">Tytu? wiadomo?ci<span class="star">*</span></label>
         <input type="text" id="title" name="message-title" placeholder="podaj tytu?..." required>
         <label for="subject">Tre?? wiadomo?ci:<span class="star">*</span></label>
         <textarea id="message" name="mess-content" placeholder="napisz..." style="height:300px" required></textarea>
         <br>
         <div class="error-message "></div>
         <input type="submit" id="send" value="Wy?lij">
         <label class="custom-file-upload">
            <input type="file">
            <p>Dodaj plik</p>
         </label>
      </form>
   </div>
</body>

uj5u.com熱心網友回復:

regexTitltePattern 有什么意義?在 testMessage 中,您將長度與未定義的 lng 進行比較,您沒有將任何值傳遞給它。

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422551.html

標籤:

上一篇:身份驗證后請求路由時拒絕訪問-AWSCloudfront和AWSS3

下一篇:如何檢查字串c#中重復出現的字符

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more