Проверка в javascript не работает как надо - PullRequest
0 голосов
/ 22 марта 2020

Я пытался решить проблему с проверкой электронной почты в JavaScript, но во всем коде, который я пробовал, возникла та же проблема. Когда я использовал инструмент разработчика в Google chrome, я не увидел ни одного сообщения об ошибке, поэтому не понимаю, почему это происходит. Я хочу показать сообщение об ошибке, если электронная почта недействительна.

Что мне не хватает?

полный код ссылки - https://jsfiddle.net/lmanhaes/cq1g5dyt/14/

Спасибо.

function checkEmail(validate) {
    let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    let email = validate.userName.value;
    if (email === re)
        return true;
    else {
        error.setAttribute("class", "error");
        error.innerHTML = ("Email is not correct. Please retype.");
    }
}
<!doctype html>
<html lang="en">

<head>
	<meta charset="utf-8">
	<title>JavaScript</title>
	<link rel="stylesheet" href="css/styles.css">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
	<section>
		<h1></h1>
		<ul>
			
		</ul>
		<h1>Register</h1>
		<p>* = Required Field</p>
		<div id="formcontainer">
			<form id="registerDetails" action="lmanha01_fma_t3confirm.html">
				<div>
					<label for="username">* Userame:</label>
					<input type="text" id="userName" required>
					<!--pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$"-->
					<!--check that the user has in fact typed in an email address-->
					<div id="error"></div>
				</div>
				<div>
					<label for="password">* Password (must be 8 characters exactly and include one Uppercase, one
						lowercase and
						one number):</label>
					<input type="password" id="password" pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,8}$"
						required>
					<input type="checkbox" id="showpasswords" onclick="Toggle()">
					<!--This creates a toggle effect-->
					<label id="showpasswordslabel" for="showpasswords">Show passwords</label>
				</div>
				<div>
					<label for="retypedpassword">* Retype your password:</label>
					<input type="password" id="retypedpassword">
					<span id="passwordmatcherror"></span>
				</div>
				<div>
					<button type="submit" id="registerButton">Register</button>
				</div>
			</form>
		</div>
	</section>
	<!--moved to the bottom to load the page faster-->
	<script src="scripts/exemple.js"></script>

</body>

</html>

1 Ответ

0 голосов
/ 22 марта 2020

Вы должны использовать test () метод регулярных выражений, чтобы возвращать true или false, если входное значение соответствует шаблону электронной почты.

if (re.test(email)){
     //logic when it is valid
}       
else{
      //logic when it is invalid
}

const email = document.getElementById('email');
function validate(){
   const regex=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  return regex.test(email.value) ?console.log("Valid"):console.log("Invalid");
}
<input type="email" id="email" />
<button onclick="validate()">
Validate
</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...