#javascript #html
#javascript #HTML
Вопрос:
Я пытаюсь заставить проверку формы работать для выполнения домашнего задания, но мой учитель по сути бесполезен. Я должен следить за этим сайтом (https://jqueryvalidation.org /) документация для создания формы, которая проверяет соответствие электронных писем, а также наличие почтового индекса, и я уже пробовал несколько разных методов, чтобы это работало. Единственное, что сейчас работает, — это js/jquery.validate.js
файл, который я загрузил с веб-сайта, но в настоящее время он проверяет только действительное электронное письмо, а не то, совпадает ли электронное письмо с подтверждением или действительный почтовый индекс. Итак, я пробовал использовать локальный скрипт для добавления правил и сообщений для этих двух вещей, но они, похоже, не работают. Я также пытался сделать это во внешнем файле .js (я опубликую код для этого под кодом .html ниже), но это также не работает.
======Index.html:======
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Join Email List</title>
<link rel="stylesheet" href="email_list.css">
</head>
<body>
<section>
<h1>Please join our email list</h1>
<h4>* denotes required field</h4>
<form id="email_form" name="email_form" action="join.html" method="get">
<label for="email">Email Address:*</label>
<input type="email" id="email" name="email" required><br>
<label for="email_confirm">Re-enter Email:*</label>
<input type="text" id="email_confirm" name="email_confirm" required><br>
<label for="first_name">First Name:</label>
<input type="text" id="first_name" name="first_name"><br>
<label for="last_name">Last Name:</label>
<input type="text" id="last_name" name="last_name"><br>
<label for="zip">5-Digit Zip Code:*</label>
<input type="text" id="zip" name="zip" required><br>
<label>amp;nbsp;</label>
<input type="submit" id="join" name="join" value="Join our List">
<input type="reset" id="reset" name="reset" value="Reset"><br>
</form>
</section>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="js/jquery.validate.js"></script>
<script src="js/validate.js"></script>
<script>
$( "#email_form" ).validate({
rules: {
email_confirm: {
equalTo: "#email"
}
zip: {
minlength: 5
maxlength: 5
}
}
messages: {
email_confirm: {
equalTo: "E-mail must match."
}
zip: {
minlength: "Zip code must be 5 digits.",
maxlength: "Zip code must be 5 digits."
}
});
</script>
</body>
</html>```
========js/Validate.js:=======
$().ready(function() {
$("email_form").validate();
rules: {
email: {
required: true,
email: true
}
email_confirm: {
equalTo: "#email"
}
zip: {
minlength: 5,
}
}
messages: {
email: {
required: "Please enter an e-mail",
email: "Please enter a valid e-mail",
}
email_confirm: {
equalTo: "Your e-mails must match"
}
zip: {
minlength: "Please enter a valid 5-digit zip code"
}
}
}
Ответ №1:
Скрипт в HTML содержит ошибки в validate ()
Попробуйте это:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Join Email List</title>
<!-- <link rel="stylesheet" href="email_list.css"> -->
</head>
<body>
<section>
<h1>Please join our email list</h1>
<h4>* denotes required field</h4>
<form id="email_form" name="email_form" action="join.html" method="get">
<label for="email">Email Address:*</label>
<input type="email" id="email" name="email" required><br>
<label for="email_confirm">Re-enter Email:*</label>
<input type="text" id="email_confirm" name="email_confirm" required><br>
<label for="first_name">First Name:</label>
<input type="text" id="first_name" name="first_name"><br>
<label for="last_name">Last Name:</label>
<input type="text" id="last_name" name="last_name"><br>
<label for="zip">5-Digit Zip Code:*</label>
<input type="text" id="zip" name="zip" required><br>
<label>amp;nbsp;</label>
<input type="submit" id="join" name="join" value="Join our List">
<input type="reset" id="reset" name="reset" value="Reset"><br>
</form>
</section>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.2/dist/jquery.validate.min.js"></script>
<!-- <script src="js/validate.js"></script> -->
<script>
$( "#email_form" ).validate({
rules: {
email_confirm: {
equalTo: "#email:checked"
},
zip: {
minlength: 5,
maxlength: 5
}
},
messages: {
email_confirm: {
equalTo: "E-mail must match."
},
zip: {
minlength: "Zip code must be 5 digits.",
maxlength: "Zip code must be 5 digits."
}
}});
</script>
</body>
</html>
Я исправил синтаксические ошибки в теге script, также я добавил cdn скрипта для проверки jquery ==>
Комментарии:
1. Большое спасибо! Он отлично работает, и теперь я понимаю, почему он не работал.
Ответ №2:
Используйте тип атрибута и шаблон для аннулирования элементов html,
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern,
https://webdesign.tutsplus.com/tutorials/html5-form-validation-with-the-pattern-attribute—cms-25145
Ответ №3:
Вы пропустили необходимый скрипт и допустили некоторые ошибки. Исправленную версию с комментариями вы найдете ниже. Не забудьте удалить их.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Join Email List</title>
<link rel="stylesheet" href="email_list.css">
<!-- this stylsheet is necessary for styling of the warnings -->
<link rel="stylesheet" href="https://jqueryvalidation.org/files/demo/site-demos.css">
</head>
<body>
<section>
<h1>Please join our email list</h1>
<h4>* denotes required field</h4>
<form id="email_form" name="email_form" action="join.html" method="get">
<label for="email">Email Address:*</label>
<input type="email" id="email" name="email" required><br>
<label for="email_confirm">Re-enter Email:*</label>
<input type="text" id="email_confirm" name="email_confirm" required><br>
<label for="first_name">First Name:</label>
<input type="text" id="first_name" name="first_name"><br>
<label for="last_name">Last Name:</label>
<input type="text" id="last_name" name="last_name"><br>
<label for="zip">5-Digit Zip Code:*</label>
<input type="text" id="zip" name="zip" required><br>
<label>amp;nbsp;</label>
<input type="submit" id="join" name="join" value="Join our List">
<input type="reset" id="reset" name="reset" value="Reset"><br>
</form>
</section>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/additional-methods.min.js"></script> // script missing
<script>
$("#email_form").validate({ // # missing
rules: {
email: {
required: true
}, // comma missing
email_confirm: {
equalTo: "#email"
}, // comma missing
zip: {
minlength: 5, // comma missing
}
}, // comma missing
messages: {
email: {
required: "Please enter an e-mail",
email: "Please enter a valid e-mail", // comma missing
},
email_confirm: {
equalTo: "Your e-mails must match"
}, // comma missing
zip: {
minlength: "Please enter a valid 5-digit zip code"
}
}
});
</script>
</body>
</html>