JavaScript - 简单数据验证中的错误逻辑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript - 简单数据验证中的错误逻辑相关的知识,希望对你有一定的参考价值。
我对编码非常陌生,并且在使用某些逻辑时遇到了困难。昨晚我问了另一个问题,社区真的很有帮助(谢谢!),所以我想我会再试一次。 `
我正在尝试制作一个收集用户电子邮件和名字的程序。我想检查表单上的每个框中是否输入了某些内容,并且为了确保他们正确输入了他们的电子邮件地址,该emailAddress1与emailAddress2相同。
我已经定义了“var errorMessage =”“;”如果在任何时候出现错误,它会根据用户在表单上犯的错误重新定义一个新的errorMessage。
问题,我认为是第二个if-else语句。我以为如果“errorMessage =”“;”仍然会提交表格。但是,无论它正在执行else语句,我都会收到一条空错误消息的警报。
为什么,如果errorMessage =“”,它是否正在运行else语句并跳过使用errorMessage =“”作为条件的if语句?
"use strict";
var $ = function(id)
return document.getElementById(id);
;
var joinList = function()
var emailAddress1 = $("email_address1").value;
var emailAddress2 = $("email_address2").value;
var firstName = $("first_name").value;
var errorMessage = "";
// validate the entries
if (emailAddress1 == "")
errorMessage = "First email address entry required";
$("email_address1").focus();
else if (emailAddress2 == "")
errorMessage = "Second email address entry required";
$("email_address2").focus();
else if (emailAddress2 != emailAddress1)
errorMessage = "Email address entries must match";
$("email_address2").focus();
else if (firstName == "")
errorMessage = "First name entry required";
$("first_name").focus();
// submit the form if all entries are valid
// otherwise, display an error message
if (errorMessage = "")
$("email_form").submit();
else
alert(errorMessage);
;
window.onload = function()
$("join_list").onclick = joinList;
$("email_address1").focus();
;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> Join Email List</title>
<link rel="stylesheet" href="email_list.css">
<script src="email_list.js"></script>
</head>
<body>
<main>
<h1>Please join our email list</h1>
<form id="email_form" name="email_form" action="join.html" method="get">
<label for="email_address1">Email Address:</label>
<input type="text" id="email_address1" name="email_address1"><br>
<label for="email_address2">Re-enter Email Address:</label>
<input type="text" id="email_address2" name="email_address2"><br>
<label for="first_name">First Name</label>
<input type="text" id="first_name" name="first_name"><br>
<label> </label>
<input type="button" id="join_list" value="Join our List">
</form>
</main>
</body>
</html>
**
因此,在您不进行比较的代码中有拼写错误,您将变量设置为空字符串。而空字符串是falsy value
所以你的代码基本上就是这个
errorMessage = "";
if (errorMessage)
else
使用jshint,jslint,eslint等工具构建到IDE中将帮助您捕获这些拼写错误。因此,请更改代码以进行正确的比较。
if (errorMessage === "")
我不确定你是否可以通过这种方式从输入中提取值。 email_address1是元素id,所以你必须在开头用hashtag引用它。在jQuery中正确执行此操作$(“#email_address1”)。val()
=,==和===之间的差异非常重要。
let testVariable = 123; // only assigns value to a variable
=和==之间的差异非常明显。在==和===之间有点复杂。
==运算符仅比较值,不识别数据类型,但===识别它们。这对你意味着什么?
可以说比你有变量testNumber,赋值123作为数字和变量textText,赋值为“123”(注意引号)。
如果将它们与==表达式进行比较则返回true,但如果将它们与===表达式进行比较则返回false。
let testNumber = 123;
let testText = "123";
正如您所看到的,变量testText是双引号,这意味着它的数据类型是String。字符串只是普通文本。但testNumber变量的数据类型为Integer。整数只是正常数字。这两个变量的内容没有区别,但数据类型却有所不同。
testNumber == testText //true - same content, different datatype we ignore that
testNumber === testTExt // false - same content, different datatype but now we consider it
我希望我至少帮助过你一点点。 :)
编辑:另外我建议您在chrome和check console中打开开发人员工具(F12)。你可以在那里看到错误。它可以帮助你很多。
以上是关于JavaScript - 简单数据验证中的错误逻辑的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 或 jQuery 中的 HTML 表单验证逻辑
在 JavaScript 中提交时值的长度验证错误 [关闭]