Попробуй это. Примечание. Я удалил переключатель из поля пароля, щелкните и присвоил полям класс
. Я также оптимизировал ваш обработчик отправки и исправил орфографию, добавив обязательные
document.getElementById("showpasswords").addEventListener("click",function() {
[...document.querySelectorAll(".password")].forEach(p =>
p.type = p.type === "password" ? "text" : "password"
)
})
document.getElementById("registerdetails").addEventListener("submit", function(e) {
const errSpan = document.getElementById("passwordmatcherror");
let firstPassword = this.password.value;
let retypedPassword = this.retypedpassword.value;
errSpan.classList.toggle("error", firstPassword !== retypedPassword);
if (firstPassword !== retypedPassword) {
errSpan.innerHTML = ("Passwords do not match. Please retype");
e.preventDefault();
}
});
<section>
<div id="formcontainer">
<form id="registerdetails" action="fma_t3confirm.html">
<div>
<label for="password">* Password (Must be 8 characters and include one uppercase, one lowercase and
one numeric):</label><br/>
<input type="password" class="password" id="password" pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,8}$" required>
<label><input type="checkbox" id="showpasswords"> Show passwords</label>
</div>
<div>
<label for="retypedpassword">* Retype your password:</label><br/>
<input type="password" class="password" id="retypedpassword">
<span id="passwordmatcherror"></span>
</div>
<input type="submit" />
</form>
</div>
</section>