I’m using pattern to check for character length before saving using form tag with
pattern=".{6,}" oninvalid="this.setCustomValidity('Password must be 6 atleast characters')"
but that doesnt work when I’m saving using ajax/jquery. it directly saves the text without checking for character length/ pattern
this is my form and ajax/jquery (it’s inside a modal)
<div style="text-align:center;">
<div style="display:inline-block">
<input type="password" id="password" class="my-2 form-control"
placeholder="Type password" name="" pattern=".{6,}" oninvalid="this.setCustomValidity('Password must be
6 atleast characters')" required><br>
<input type="password" id="confirm_password" class="mt-2 form-control"
onclick="repass()" placeholder="Retype password" name="" pattern=".{6,}"
oninvalid="this.setCustomValidity('Password must be 6 atleast characters')" required><br>
<span id='message'></span>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" name="submit" class="btn btn-primary" id="submit_password" disabled>Change Password</button>
<a href="admin_logout.php">
<button type="button" class="btn btn-danger">Logout</button>
</a>
</div>
<script>
function repass(){
$('#password, #confirm_password').on('keyup keydown', function () {
if ($('#password').val() == $('#confirm_password').val()) {
$('#message').html(' ').css('color', 'red');
$('#submit_password').attr("disabled", false);
} else{
$('#submit_password').attr("disabled", true);
$('#message').html('Password does not match').css('color', 'red');
}
// if (($('#password').val()) == null) {
// $('#message').html(' ').css('color', 'red');
// $('#submit_password').attr("disabled", true);
//
// }
});
}
</script>
<script>
$("#submit_password").click(function(e) {
// e.preventDefault();
var password = $('#password').val();
$.ajax({
type: 'POST',
data: {password:password},
url: 'change_pass.php',
success: function(data) {
// alert(data);
swal( {
title: "SUCCESS!", text: "Password changed!", icon: "success", timer: 1800, button: false,
}
);
$('#change_pass').modal('hide');
}
});
});
</script>
2
Answers
The reason the validation rules don’t appear is because your inputs are not contained within a
form
, and you do not submit that form. If you correct that, your code will work.Also note that you can improve the HTML by removing the inline event handlers and attaching them unobtrusively. Try this: