В следующем примере моей проблемы у меня есть 2 поля, которые необходимо проверить.
Пока все (в данном случае 2) поля не будут проверены, кнопка отправки должна быть отключена.
Если оба проверены, она должна быть включена.
Моя проблема: в ту минуту, когда проверяется первое поле, кнопка активируется, что слишком рано.
Я понимаю (но не думаю, что знаю), что это происходит из-за того, где я разместил $("#submitBtn").attr("disabled",false);
Любой намек на то, как заставить его работать, будет принят с благодарностью.
РЕДАКТИРОВАТЬ: Пример полной регистрационной формы с включенной кнопкой отправки, ТОЛЬКО когда все элементы формы проверены, см. это.
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<style>
input[type="submit"]:disabled {
background-color: red; }
</style>
</head>
<body>
<div class="container mt-2">
<div class="row">
<div class="col-md-4 offset-md-4">
<form action="page2.php" id="myForm1" class="needs-validation" novalidate>
<div class="form-group">
<input type="text" class="form-control" pattern="^[a-z]{3,6}$" required autofocus>
<div class="valid-feedback">Valid</div>
<div class="invalid-feedback">a to z only (3 to 6 long)</div>
</div>
<div class="form-group">
<input type="text" class="form-control" pattern="^[a-z]{3,6}$" required>
<div class="valid-feedback">Valid</div>
<div class="invalid-feedback">a to z only (3 to 6 long)</div>
</div>
<div class="form-group">
<button id="submitBtn" type="submit" class="btn btn-primary submit-button" disabled>Submit</button>
</div>
</form>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script>
window.addEventListener('load', function() {
let currForm1 = document.getElementById('myForm1');
// Validate on input:
currForm1.querySelectorAll('.form-control').forEach(input => {
input.addEventListener(('input'), () => {
if (input.checkValidity()) {
input.classList.remove('is-invalid')
input.classList.add('is-valid');
$("#submitBtn").attr("disabled",false); <<<<======== ??????
} else {
input.classList.remove('is-valid')
input.classList.add('is-invalid');
}
});
});
// Validate on submit:
currForm1.addEventListener('submit', function(event) {
if (currForm1.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
currForm1.classList.add('was-validated');
}, false);
});
</script>
input.addEventListener[...]
добавьте еще одну проверку. Проверьте, все ли входные данные имеют классis-valid
. Если это так, используйте$("#submitBtn").attr("disabled",false);
там. - person JM-AGMS   schedule 07.11.2019is-valid
? Я уже несколько часов гоняюсь за ним своим хвостом... - person gadi   schedule 07.11.2019