у меня есть тег "div" с сообщением об ошибке в моей форме. этот тег отображается при нажатии кнопки, а входные данные равны нулю. мой код работает, но тег «div» быстро скрывается.
<htlm>
<head>
</head>
<body>
<div id = "ShowError">
<h3>Username Or Password is incorrect.</h3>
</div>
<form id = "Main" method = "POST">
<input id = "User" type = "text" name = "Name" placeholder = "Enter Your Username">
<br>
<input id = "Pass" type = "password" name = "Pass" placeholder = "Enter Your Password"/>
<br>
<button id = "bt">Login</button>
<button >Cancel</button>
</form>
</body>
<script src = ""></script>
</html>
div#ShowError{
opacity:0.0;
}
var btn = document.getElementById("bt");
btn.addEventListener("click",func);
var Username = document.getElementById("User");
var Password = document.getElementById("Pass");
function func()
{
if (Username.value == "" || Password.value == "")
{
document.getElementById("ShowError").style.opacity = "1.0";
}
}
var Username
— Имена переменных, начинающиеся с заглавной буквы, традиционно зарезервированы для функций-конструкторов в JavaScript. Не используйте их для других видов ценности.
Вы должны запустить свой HTML через валидатор.
btn.addEventListener("click",func);
— В общем, лучше использовать событие отправки формы, а не событие клика кнопки отправки.
Нажав кнопку отправки, вы отправите форму.
Итак, JavaScript запускается, форма отправляется и загружается новая страница. JavaScript не запущен на новой странице.
Предотвратить поведение по умолчанию события, если вы не хотите, чтобы форма отправлялась.
function func(e)
{
if (Username.value == "" || Password.value == "")
{
e.preventDefault();
document.getElementById("ShowError").style.opacity = "1.0";
}
}
Классика не умирает :-)
Если я вас правильно понял, вы хотите замедлить изменение непрозрачности сообщения об ошибке проверки. Например, медленно меняйте непрозрачность с 0.0 на 1.0, верно? Если это так, для медленного изменения непрозрачности сообщения об ошибке проверки вы должны добавить свойство css переход с помощью javascript в свой div сообщения об ошибке проверки.
function func(event)
{
if (Username.value == "" || Password.value == "")
{
document.getElementById("ShowError").style.transition = "all 2s"
document.getElementById("ShowError").style.opacity = 1;
}
}
а также, чтобы остановить перезагрузку страницы при нажатии кнопки входа, вы можете включить type="button" в кнопку входа
<button type = "button" id = "bt">Login</button>
Рабочая демонстрация:
var btn = document.getElementById("bt");
btn.addEventListener("click",func);
//document.getElementById("ShowError").style.transition = "all 2s"
var Username = document.getElementById("User");
var Password = document.getElementById("Pass");
Username.addEventListener("input",func2)
Password.addEventListener("input",func2)
function func(event)
{
if (Username.value == "" || Password.value == "")
{
document.getElementById("ShowError").style.transition = "all 2s"
document.getElementById("ShowError").style.opacity = 1;
}
}
function func2(){
if (Username.value !== "" && Password.value !== ""){
document.getElementById("ShowError").style.transition = "all 2s"
document.getElementById("ShowError").style.opacity = 0;
}
}
div#ShowError{
opacity:0.0;
}
<div id = "ShowError">
<h3>Username Or Password is incorrect.</h3>
</div>
<form id = "Main" method = "POST">
<input id = "User" type = "text" name = "Name" placeholder = "Enter Your Username">
<br>
<input id = "Pass" type = "password" name = "Pass" placeholder = "Enter Your Password"/>
<br>
<button type = "button" id = "bt">Login</button>
<button >Cancel</button>
</form>
Спасибо... но если ввод заполнен, сообщение об ошибке не скрывается в форме
@hamid Вам нужно отслеживать, есть ли какие-либо изменения во входном значении для достижения этой функциональности. Добавьте eventListener в оба поля ввода. Проверьте обновленный ответ