В форме подтверждения mi У меня есть два поля ввода для того, чтобы написать письмо и подтвердить его. Перед отправкой требуется 2 подтверждающих: 1-email должен стоять на вашем e-mail, 2-email должен совпадать по адресу электронной почты два раза. Я могу обрабатывать эти утверждения каждый из них, используя две отдельные функции javascript, но я терплю неудачу, когда пытаюсь проверить их все в атрибуте события onsubmit. Если я напишу правильный адрес электронной почты, форма дойдет до адресата действий, даже если подтверждение электронной почты не соответствует. Оглядываясь в интернете, мне не помогает. Здесь и есть код (HTML/JavaScript):javascript onsubmit событие для проверки нескольких функций не работает
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Email Validation</title>
<script type="text/javascript">
function isEmail(email, output) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var email = document.getElementById(email).value;
if (regex.test(email)) {
return true;
} else {
document.getElementById(output).innerHTML = 'wrong email';
return false;
}
}
function compareEmail(email, emailToCompare, output){
var email = document.getElementById(email).value;
var emailToCompare = document.getElementById(emailToCompare).value;
if(emailToCompare == email){
document.getElementById(output).innerHTML = 'ok!';
return true;
}else{
document.getElementById(output).innerHTML = 'emails dont match!';
return false;
}
}
function check(){
return isEmail() && compareEmail();
}
</script>
</head>
<body>
<form action="file.php" method="post" onSubmit="return check()">
<p>Email</p>
<input type="text" name="email" maxlength="50" id="email">
<div id="email_result">
</div>
<br/>
<p>Confirm email</p>
<input type="text" onpaste="return false;" autocomplete="off" name="email" maxlength="50" id="confirm_email" onKeyUp="return compareEmail('email', 'confirm_email', 'confirm_email_result')">
<div id="confirm_email_result">
</div>
<input type="submit" name="submit" value="Register" onclick="return isEmail('email', 'email_result');">
</form>
</body>
Двойной контроль не работает с последующем сценарием тоже:
function check(){
if (isEmail() && compareEmail()){
return true;
}else{
return false;
}
}
Ничего не меняется, если я использую:
onSubmit="return check()"
или
onSubmit="check()"
в виде атрибута события.
Thanks Guffa! Он работает сейчас, и спасибо за предложение о переменных по сравнению с параметрами, я переписал код без параметров. –