Вот вам рабочий код. Просто запустите сниппет и посмотрите, как он работает.
Причина, по которой ваш status
всегда false
, заключается в том, что вы объявляете его вне события щелчка. После того, как вы все введенные данные проверены, status = false не знает, где обновить до true.
Я всегда добавлял функцию .show()
к вашей ошибке .html
. В основном, если весь ввод хорош для go, элемент errorMessage
будет скрыт, и если пользователь снова удалит значение a из ввода - для div установлено значение hide()
, поэтому нам нужно снова показать ошибку на том же element.
В основном его нет в событии click
scope
$("#btn").on('click', function() {
var status = false;
var error = "";
var missing = "";
if (!$("#email").val()) {
missing += "<br> Email";
}
if ($("#number").val() == "") {
missing += "<br> Phone Number";
}
if (missing != "") {
error += "Following field(s) are missing:" + missing;
}
if (error != '') {
$("#errorMessage").html(error).show();
} else {
$("#errorMessage").hide();
status = true;
}
if (status == true) {
alert("done");
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="email" />
<input type="text" id="number" />
<button id="btn">Click Me</button>
<div id="errorMessage"></div>
Надеюсь, это поможет.